MySQL में दो संख्यात्मक कॉलम के अंतर (घटाव) के आधार पर परिणामों को क्रमबद्ध करने के लिए ORDER BY क्लॉज में सीधे अंकगणितीय अभिव्यक्ति का उपयोग करें। यह स्कोर अंतर, मार्जिन, विचलन, या किसी भी गणना किए गए अंतर के अनुसार क्रमबद्ध करने के लिए उपयोगी है।
सिंटैक्स
SELECT * FROM table_name ORDER BY (numeric_column1 - numeric_column2);
व्यावहारिक उदाहरण
टेबल बनाएं:
mysql> CREATE TABLE DemoTable1313 (
Name VARCHAR(20),
Score1 INT,
Score2 INT
);
डेटा डालें:
mysql> INSERT INTO DemoTable1313 VALUES('Chris', 40, 60);
mysql> INSERT INTO DemoTable1313 VALUES('David', 70, 50);
mysql> INSERT INTO DemoTable1313 VALUES('Adam', 35, 30);
वर्तमान डेटा:
mysql> SELECT * FROM DemoTable1313;
+-------+--------+--------+ | Name | Score1 | Score2 | +-------+--------+--------+ | Chris | 40 | 60 | | David | 70 | 50 | | Adam | 35 | 30 | +-------+--------+--------+
संख्यात्मक अंतर (Score1 - Score2) के अनुसार आरोही क्रम
mysql> SELECT * FROM DemoTable1313 ORDER BY (Score1 - Score2);
परिणाम
+-------+--------+--------+ | Name | Score1 | Score2 | +-------+--------+--------+ | Chris | 40 | 60 | -- अंतर: -20 | Adam | 35 | 30 | -- अंतर: 5 | David | 70 | 50 | -- अंतर: 20 +-------+--------+--------+
अवरोही क्रम के लिए
SELECT * FROM DemoTable1313 ORDER BY (Score1 - Score2) DESC;
+-------+--------+--------+ | Name | Score1 | Score2 | +-------+--------+--------+ | David | 70 | 50 | -- अंतर: 20 | Adam | 35 | 30 | -- अंतर: 5 | Chris | 40 | 60 | -- अंतर: -20 +-------+--------+--------+
अंतर कॉलम के रूप में दिखाने के लिए
SELECT Name, Score1, Score2, (Score1 - Score2) AS Difference FROM DemoTable1313 ORDER BY Difference;
उन्नत: निरपेक्ष अंतर (परिमाण) के अनुसार क्रमबद्ध करें
SELECT * FROM DemoTable1313 ORDER BY ABS(Score1 - Score2);
+-------+--------+--------+ | Name | Score1 | Score2 | +-------+--------+--------+ | Adam | 35 | 30 | -- |5| = 5 | Chris | 40 | 60 | |-20| = 20 | David | 70 | 50 | |20| = 20 +-------+--------+--------+
उपयोग के मामले
- खेल: गोल अंतर, पॉइंट स्प्रेड
- वित्त: बजट बनाम वास्तविक विचलन
- गुणवत्ता: लक्ष्य बनाम मापा मूल्य अंतर
- रैंकिंग: सुधार/गिरावट मापना
प्रदर्शन नोट
- अभिव्यक्ति प्रत्येक पंक्ति के लिए गणना की जाती है - इंडेक्स उपयोग नहीं होता
- बड़े डेटासेट के लिए, परिकलित कॉलम या सामग्रीकृत दृश्य पर विचार करें
EXPLAINसेUsing filesortदिख सकता है
ORDER BY में अंकगणितीय अभिव्यक्ति MySQL की एक शक्तिशाली विशेषता है जो रनटाइम गणना के आधार पर लचीली क्रमबद्धता सक्षम करती है।