PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL WHERE क्लॉज में कॉलम उपनाम स्वीकार नहीं करता है

आप दो प्रश्न पूछते हैं:
1.

<ब्लॉकक्वॉट>

मैं WHERE क्लॉज पर SELECT कॉस्ट उपनाम का उल्लेख क्यों नहीं कर सकता?

2.

<ब्लॉकक्वॉट>

लेकिन लागत desc द्वारा आदेश क्यों; अनुमति है?


मैनुअल में उन दोनों का उत्तर यहां दिया गया है:

<ब्लॉकक्वॉट>

ORDER BY में कॉलम के मान को संदर्भित करने के लिए आउटपुट कॉलम के नाम का उपयोग किया जा सकता है और GROUP BY खंड, लेकिन WHERE . में नहीं या HAVING खंड; वहां आपको इसके बजाय व्यंजक लिखना होगा।

इसे SQL मानक . द्वारा परिभाषित किया गया है और इसका कारण SELECT . में घटनाओं का क्रम है सवाल। उस समय WHERE क्लॉज लागू होते हैं, आउटपुट कॉलम SELECT . में अभी तक सूची की गणना नहीं की गई है। लेकिन जब ORDER BY की बात आती है , आउटपुट कॉलम आसानी से उपलब्ध हैं।

तो हालांकि यह पहली बार में असुविधाजनक और भ्रमित करने वाला है, फिर भी यह समझ में आता है।

संबंधित:

  • PostgreSQL जहां गिनती की स्थिति है
  • LIMIT लागू होने से पहले परिणाम गणना प्राप्त करने का सबसे अच्छा तरीका



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में एक दशमलव से अनुगामी शून्य कैसे निकालें

  2. सभी तालिका नामों को सूचीबद्ध करने के लिए PostgreSQL क्वेरी?

  3. रूबी 'पीजी' मणि libpq.5.dylib (OSX पर) की गलत प्रति से जुड़ती है

  4. माता-पिता से पूछताछ करते समय एक पंक्ति की स्रोत तालिका का नाम प्राप्त करें

  5. पैरामीटर NULL होने पर कॉलम में DEFAULT मान डालना