यूजर-डिफाइंड वेरिएबल के साथ SELECT में एलियास मान पुनः उपयोग करना
MySQL में आप उसी SELECT स्टेटमेंट में कॉलम एलियास को सीधे रेफर नहीं कर सकते। इसके बजाय यूजर-डिफाइंड वेरिएबल (@variable) का उपयोग करें।
सिंटैक्स:
SELECT @yourAliasName := CURDATE() AS anyAliasName,
CONCAT('yourValue.', yourColumnName, ' yourValue', @yourAliasName) AS anyAliasName
FROM yourTableName;
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
Name VARCHAR(40)
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES ('John Smith');
mysql> INSERT INTO DemoTable VALUES ('Chris Brown');
mysql> INSERT INTO DemoTable VALUES ('David Miller');
mysql> INSERT INTO DemoTable VALUES ('John Doe');
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+--------------+ | Name | +--------------+ | John Smith | | Chris Brown | | David Miller | | John Doe | +--------------+
उसी स्टेटमेंट में एलियास मान का उपयोग करने के लिए क्वेरी:
mysql> SELECT @todayDate := CURDATE() AS todayDate,
CONCAT('Mr.', Name, ' The current Date is=', @todayDate) AS Result
FROM DemoTable;
आउटपुट:
+------------+------------------------------------------------+ | todayDate | Result | +------------+------------------------------------------------+ | 2019-09-08 | Mr.John Smith The current Date is=2019-09-08 | | 2019-09-08 | Mr.Chris Brown The current Date is=2019-09-08 | | 2019-09-08 | Mr.David Miller The current Date is=2019-09-08 | | 2019-09-08 | Mr.John Doe The current Date is=2019-09-08 | +------------+------------------------------------------------+
व्याख्या:
- @todayDate := CURDATE(): यूजर-डिफाइंड वेरिएबल @todayDate को वर्तमान तारीख असाइन करता है और उसे todayDate एलियास के साथ लौटाता है
- CONCAT(..., @todayDate): उसी पंक्ति में वेरिएबल @todayDate का मान उपयोग करता है
- वेरिएबल सेशन-स्कोप्ड होता है और कनेक्शन के दौरान बना रहता है
महत्वपूर्ण:
- एलियास
todayDateको सीधेCONCAT(..., todayDate)में उपयोग नहीं कर सकते - एरर देगा - वेरिएबल असाइनमेंट
:=ऑपरेटर का उपयोग करता है (तुलना=से अलग) - मूल्यांकन क्रम: SELECT सूची में बाएं से दाएं
वैकल्पिक - सबक्वेरी/डिराइव्ड टेबल:
SELECT todayDate, CONCAT('Mr.', Name, ' The current Date is=', todayDate) AS Result
FROM (SELECT CURDATE() AS todayDate, Name FROM DemoTable) AS sub;
यह तरीका अधिक मानक SQL है और वेरिएबल्स पर निर्भर नहीं करता।