MySQL में ORDER BY NULL का उपयोग और विभिन्न संस्करणों में इसका व्यवहार।
नोट: MySQL 5.7 से पहले, ORDER BY NULL ग्रुपिंग/अन्य ऑपरेशन से अंतर्निहित क्रमबद्धता को दबाने के लिए उपयोगी था। MySQL 8.0+ में, अंतर्निहित क्रमबद्धता व्यवहार बदल गया है और ORDER BY NULL निर्दिष्ट करना अब आवश्यक नहीं है।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
-> Name VARCHAR(10)
-> );
Query OK, 0 rows affected (1.01 sec)
mysql> INSERT INTO DemoTable VALUES('John'), ('Bob'), ('David'), ('Sam'), ('Mike');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट (सम्मिलन क्रम)
+-------+ | Name | +-------+ | John | | Bob | | David | | Sam | | Mike | +-------+ 5 rows in set (0.00 sec)
ORDER BY NULL का उपयोग
mysql> SELECT * FROM DemoTable ORDER BY NULL;
आउटपुट
+-------+ | Name | +-------+ | John | | Bob | | David | | Sam | | Mike | +-------+ 5 rows in set (0.00 sec)
व्यवहार: MySQL 8.0 में ORDER BY NULL कोई प्रभाव नहीं डालता (पहले जैसा ही क्रम)। यह सिंटैक्स रूप से मान्य है लेकिन निष्पादन योजना नहीं बदलता।
इतिहास:
- MySQL 5.6 और पहले:
GROUP BYअंतर्निहित रूप से क्रमबद्ध करता था;ORDER BY NULLइसे दबाता था - MySQL 5.7:
GROUP BYअंतर्निहित क्रमबद्धता डिफ़ॉल्ट रूप से बंद (sql_mode मेंONLY_FULL_GROUP_BY) - MySQL 8.0:
ORDER BY NULLनो-ऑप (no-op), ऑप्टिमाइज़र द्वारा अनदेखा
सर्वोत्तम अभ्यास: वांछित क्रम के लिए हमेशा स्पष्ट ORDER BY column उपयोग करें। किसी विशेष क्रम पर भरोसा न करें जब तक कि ORDER BY निर्दिष्ट न हो।