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

Oracle और Mysql में समान चयन में कॉलम उपनाम का उपयोग क्यों समर्थित नहीं है?

एक कॉलम को एक अलग नाम देने के लिए एक उपनाम का उपयोग क्वेरी चयन सूची में किया जा सकता है। आप उपनाम का उपयोग GROUP BY . में कर सकते हैं , ORDER BY , या HAVING कॉलम को संदर्भित करने के लिए खंड:

SELECT SQRT(a*b) AS root FROM tbl_name
  GROUP BY root HAVING root > 0;

SELECT id, COUNT(*) AS cnt FROM tbl_name
  GROUP BY id HAVING cnt > 0;

SELECT id AS 'Customer identity' FROM tbl_name;

मानक SQL WHERE . में स्तंभ उपनामों के संदर्भों की अनुमति नहीं देता है खंड। यह प्रतिबंध इसलिए लगाया गया है क्योंकि जब WHERE खंड का मूल्यांकन किया गया है, तो स्तंभ मान अभी तक निर्धारित नहीं किया गया हो सकता है। उदाहरण के लिए, निम्न क्वेरी अवैध है:

SELECT id, COUNT(*) AS cnt FROM tbl_name
  WHERE cnt > 0 GROUP BY id;

WHERE क्लॉज निर्धारित करता है कि कौन सी पंक्तियों को GROUP BY में शामिल किया जाना चाहिए खंड, लेकिन यह एक स्तंभ मान के उपनाम को संदर्भित करता है जो तब तक ज्ञात नहीं है जब तक कि पंक्तियों का चयन नहीं किया जाता है, और GROUP BY द्वारा समूहीकृत किया जाता है ।

किसी क्वेरी की चयन सूची में, एक उद्धृत कॉलम उपनाम को पहचानकर्ता या स्ट्रिंग उद्धरण वर्णों का उपयोग करके निर्दिष्ट किया जा सकता है:

SELECT 1 AS `one`, 2 AS 'two';

कथन में कहीं और, उपनाम के उद्धृत संदर्भों को पहचानकर्ता उद्धरण का उपयोग करना चाहिए या संदर्भ को एक स्ट्रिंग अक्षर के रूप में माना जाता है। उदाहरण के लिए, यह कथन कॉलम आईडी में मानों के आधार पर समूहित करता है, जिसे उपनाम a . का उपयोग करके संदर्भित किया जाता है :

SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
  GROUP BY `a`;

लेकिन यह कथन शाब्दिक स्ट्रिंग 'ए' द्वारा समूहित है और अपेक्षा के अनुरूप काम नहीं करेगा:

SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
  GROUP BY 'a';

स्रोत:https://docs.oracle .com/cd/E17952_01/refman-5.0-hi/problems-with-alias.html



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:फ़ील्ड प्रकार के आधार पर जोड़ें और माइनस

  2. PHP mysql को mysqli में बदलें

  3. लैरावेल में मेरे एसक्यूएल स्टेटमेंट को कैसे कार्यान्वित करें?

  4. SQL समूह तिथि के अनुसार, लेकिन दिनांक w/o रिकॉर्ड भी प्राप्त करें

  5. MySQL का ORDER BY RAND () कैसे काम करता है?