समाधान: SELECT में गणना और ORDER BY एलियास
दो कॉलम के गणितीय फ़ंक्शन के आधार पर परिणामों को क्रमबद्ध करने के लिए, SELECT सूची में गणना करें और उसके एलियास द्वारा ORDER BY करें।
सिंटैक्स
SELECT (expression_using_col1_and_col2) AS calculation_alias FROM yourTableName ORDER BY calculation_alias DESC;
व्यावहारिक उदाहरण
टेबल बनाना और डेटा डालना
mysql> CREATE TABLE orderByAFunctionDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> FirstNumber INT,
-> SecondNumber INT
-> );
mysql> INSERT INTO orderByAFunctionDemo(FirstNumber, SecondNumber) VALUES
-> (10, 4), (45, 78), (23, 10), (67, 237), (12, 90);
क्वेरी: 4*FirstNumber + 5*SecondNumber द्वारा अवरोही क्रम
mysql> SELECT (4*FirstNumber + 5*SecondNumber) AS Calculation
-> FROM orderByAFunctionDemo
-> ORDER BY Calculation DESC;
परिणाम
| Calculation | व्युत्पत्ति |
|---|---|
| 1453 | 4×67 + 5×237 = 268 + 1185 |
| 570 | 4×45 + 5×78 = 180 + 390 |
| 498 | 4×23 + 5×10 = 92 + 50 |
| 142 | 4×12 + 5×90 = 48 + 450 |
| 60 | 4×10 + 5×4 = 40 + 20 |
उन्नत उपयोग
मूल कॉलम भी दिखाना
SELECT
Id, FirstNumber, SecondNumber,
(4*FirstNumber + 5*SecondNumber) AS Calculation
FROM orderByAFunctionDemo
ORDER BY Calculation DESC;
जटिल फ़ंक्शन
ORDER BY (FirstNumber / NULLIF(SecondNumber, 0)) DESC -- अनुपात ORDER BY ABS(FirstNumber - SecondNumber) DESC -- निरपेक्ष अंतर ORDER BY SQRT(FirstNumber*FirstNumber + SecondNumber*SecondNumber) DESC -- यूक्लिडियन दूरी
प्रदर्शन नोट
- गणना प्रत्येक पंक्ति के लिए की जाती है - बड़े टेबल पर धीमा हो सकता है
- यदि अक्सर उपयोग करते हैं, तो गणना कॉलम और इंडेक्स जोड़ने पर विचार करें
- WHERE क्लॉज में समान अभिव्यक्ति का उपयोग करने से इंडेक्स उपयोग नहीं होगा