आप दो प्रश्न पूछते हैं:
1.
मैं WHERE क्लॉज पर SELECT कॉस्ट उपनाम का उल्लेख क्यों नहीं कर सकता?
2.
<ब्लॉकक्वॉट>लेकिन लागत desc द्वारा आदेश क्यों; अनुमति है?
मैनुअल में उन दोनों का उत्तर यहां दिया गया है:
<ब्लॉकक्वॉट>
ORDER BY
में कॉलम के मान को संदर्भित करने के लिए आउटपुट कॉलम के नाम का उपयोग किया जा सकता है और GROUP BY
खंड, लेकिन WHERE
. में नहीं या HAVING
खंड; वहां आपको इसके बजाय व्यंजक लिखना होगा।
इसे SQL मानक . द्वारा परिभाषित किया गया है और इसका कारण SELECT
. में घटनाओं का क्रम है सवाल। उस समय WHERE
क्लॉज लागू होते हैं, आउटपुट कॉलम SELECT
. में अभी तक सूची की गणना नहीं की गई है। लेकिन जब ORDER BY
की बात आती है , आउटपुट कॉलम आसानी से उपलब्ध हैं।
तो हालांकि यह पहली बार में असुविधाजनक और भ्रमित करने वाला है, फिर भी यह समझ में आता है।
संबंधित:
- PostgreSQL जहां गिनती की स्थिति है
- LIMIT लागू होने से पहले परिणाम गणना प्राप्त करने का सबसे अच्छा तरीका