MySQL में बूलियन एक्सप्रेशन (कॉलम > मान) का उपयोग करके सॉर्ट क्रम को नियंत्रित कर सकते हैं: TRUE (1) पहले, FALSE (0) बाद में, फिर प्रत्येक समूह के भीतर द्वितीयक सॉर्ट।
उदाहरण: 10 से बड़े मान पहले (आरोही), फिर 10 या छोटे (आरोही)
1. टेबल बनाएं
mysql> CREATE TABLE DemoTable (Value INT);
2. डेटा डालें
mysql> INSERT INTO DemoTable VALUES(20), (40), (30), (10), (90), (70), (80), (9), (8);
3. मूल क्रम
mysql> SELECT * FROM DemoTable; +-------+ | Value | +-------+ | 20 | | 40 | | 30 | | 10 | | 90 | | 70 | | 80 | | 9 | | 8 | +-------+
4. रैप-अराउंड क्वेरी
mysql> SELECT * FROM DemoTable
-> ORDER BY Value > 10 DESC, Value ASC;
5. परिणाम
+-------+ | Value | +-------+ | 20 | | 30 | | 40 | | 70 | | 80 | | 90 | | 8 | | 9 | | 10 | +-------+
कैसे काम करता है
Value > 10प्रत्येक पंक्ति के लिए 1 (TRUE) या 0 (FALSE) देता हैDESC- 1 को पहले रखता है (10 से बड़े मान पहले)Value ASC- प्रत्येक समूह के भीतर आरोही क्रम
सामान्य पैटर्न
-- थ्रेशोल्ड से ऊपर पहले (आरोही), फिर नीचे (आरोही) ORDER BY col > threshold DESC, col ASC -- थ्रेशोल्ड से ऊपर पहले (अवरोही), फिर नीचे (अवरोही) ORDER BY col > threshold DESC, col DESC -- विशिष्ट मान पहले ORDER BY col = 'priority_value' DESC, col ASC
उपयोग के मामले
- पैजिनेशन में "वर्तमान पृष्ठ पहले" दिखाना
- विशिष्ट श्रेणी को शीर्ष पर रखना
- सर्कुलर/रैप-अराउंड सूचियां
नोट
यह ट्रिक MySQL के बूलियन-से-पूर्णांक रूपांतरण (TRUE=1, FALSE=0) पर निर्भर करती है। अन्य डेटाबेस में CASE WHEN उपयोग करें।