MySQL में ORDER BY क्लॉज में कॉलम नाम के बजाय **कॉलम स्थिति (पोजिशनल नंबर)** का उपयोग करके परिणामों को क्रमबद्ध किया जा सकता है। यह तब उपयोगी होता है जब कॉलम नाम लंबे, जटिल, या डायनामिक हों, या SELECT * उपयोग कर रहे हों।
सिंटैक्स
SELECT * FROM table_name ORDER BY column_position [ASC|DESC] [LIMIT n];
column_position:SELECTसूची में कॉलम की 1-आधारित स्थिति1= पहला कॉलम,2= दूसरा कॉलम, आदि
व्यावहारिक उदाहरण
टेबल बनाएं:
mysql> CREATE TABLE DemoTable1325 (Id INT, Name VARCHAR(20));
डेटा डालें:
mysql> INSERT INTO DemoTable1325 VALUES(100, 'Chris'); mysql> INSERT INTO DemoTable1325 VALUES(101, 'Bob'); mysql> INSERT INTO DemoTable1325 VALUES(120, 'David'); mysql> INSERT INTO DemoTable1325 VALUES(115, 'Sam'); mysql> INSERT INTO DemoTable1325 VALUES(130, 'Carol'); mysql> INSERT INTO DemoTable1325 VALUES(150, 'Mike');
डेटा देखें:
mysql> SELECT * FROM DemoTable1325;
+------+-------+ | Id | Name | +------+-------+ | 100 | Chris | | 101 | Bob | | 120 | David | | 115 | Sam | | 130 | Carol | | 150 | Mike | +------+-------+
पहले कॉलम (Id) द्वारा अवरोही क्रम, शीर्ष 4
mysql> SELECT * FROM DemoTable1325 ORDER BY 1 DESC LIMIT 4;
परिणाम
+------+-------+ | Id | Name | +------+-------+ | 150 | Mike | | 130 | Carol | | 120 | David | | 115 | Sam | +------+-------+
व्याख्या
ORDER BY 1का अर्थ हैSELECTसूची का **पहला कॉलम** (Id)DESCअवरोही क्रम (बड़े से छोटे)LIMIT 4केवल शीर्ष 4 पंक्तियां लौटाता है
दूसरे कॉलम द्वारा क्रमबद्ध करें
SELECT * FROM DemoTable1325 ORDER BY 2; -- Name द्वारा आरोही SELECT * FROM DemoTable1325 ORDER BY 2 DESC; -- Name द्वारा अवरोही
एक्सप्रेशन/गणना कॉलम द्वारा क्रमबद्ध करें
SELECT Id, Name, (Id * 2) AS DoubleId FROM DemoTable1325 ORDER BY 3;
तीसरा कॉलम (DoubleId) गणना किया गया है, फिर भी स्थिति 3 से क्रमबद्ध होता है।
लाभ
- संक्षिप्त: लंबे कॉलम नाम/एलियास टाइप करने की आवश्यकता नहीं
- SELECT * के साथ काम करता है: कॉलम नाम जाने बिना क्रमबद्ध करें
- एलियास/एक्सप्रेशन कॉलम पर भी काम करता है
नुकसान और चेतावनियां
| समस्या | विवरण |
|---|---|
| भंगुरता | SELECT सूची बदलने पर क्रमबद्धता टूट जाती है |
| पठनीयता | कोड पढ़ने वाला नहीं जानता कौन सा कॉलम उपयोग हो रहा है |
| रखरखाव | कॉलम जोड़ने/हटाने से गलत क्रमबद्धता हो सकती है |
| SQL मानक | कुछ डेटाबेस (PostgreSQL, SQL Server) स्थिति क्रमबद्धता का समर्थन नहीं करते |