शून्येतर मानों को पहले, फिर शून्य मानों को सॉर्ट करना
MySQL में बूलियन अभिव्यक्ति Value = 0 का परिणाम 0 (असत्य) या 1 (सत्य) होता है। ORDER BY Value=0, Value लिखने से पहले गैर-शून्य मान (0=असत्य→0) आते हैं, फिर शून्य मान (0=सत्य→1), और प्रत्येक समूह के अंदर मान के अनुसार सॉर्ट होता है।
टेबल और डेटा
CREATE TABLE gettingAndOrderingRowsDemo (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Value INT
);
INSERT INTO gettingAndOrderingRowsDemo (Value) VALUES
(10), (13), (0), (20), (30), (60), (0), (45), (0);
क्वेरी
SELECT * FROM gettingAndOrderingRowsDemo ORDER BY Value = 0, Value;
आउटपुट
+----+-------+ | Id | Value | +----+-------+ | 1 | 10 | | 2 | 13 | | 4 | 20 | | 5 | 30 | | 8 | 45 | | 6 | 60 | | 3 | 0 | | 7 | 0 | | 9 | 0 | +----+-------+
कैसे काम करता है
Value = 0प्रत्येक पंक्ति के लिए 0 (गैर-शून्य) या 1 (शून्य) मूल्यांकन करता है।ORDER BYपहले इस बूलियन परिणाम से सॉर्ट करता है: 0 पहले, फिर 1।- फिर
Valueसे सॉर्ट करता है (आरोही)।
वैकल्पिक: CASE एक्सप्रेशन (अधिक स्पष्ट)
ORDER BY CASE WHEN Value = 0 THEN 1 ELSE 0 END, Value
अवरोही क्रम में गैर-शून्य मान
ORDER BY Value = 0, Value DESC
नोट
- यह ट्रिक किसी भी तुलना के लिए काम करती है:
ORDER BY (col IS NULL), col→ NULL अंत में। - इंडेक्स उपयोग:
ORDER BY Value = 0, Valueइंडेक्स उपयोग को रोक सकता है; बड़े टेबल पर आंशिक इंडेक्स या जनरेटेड कॉलम पर विचार करें।