Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में मान शून्य से अधिक वाली पंक्तियों को पहले ऑर्डर करें (ORDER BY Value=0, Value)

शून्येतर मानों को पहले, फिर शून्य मानों को सॉर्ट करना

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     |
+----+-------+

कैसे काम करता है

  1. Value = 0 प्रत्येक पंक्ति के लिए 0 (गैर-शून्य) या 1 (शून्य) मूल्यांकन करता है।
  2. ORDER BY पहले इस बूलियन परिणाम से सॉर्ट करता है: 0 पहले, फिर 1।
  3. फिर 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 इंडेक्स उपयोग को रोक सकता है; बड़े टेबल पर आंशिक इंडेक्स या जनरेटेड कॉलम पर विचार करें।
  1. - MySQL क्वेरी में "नॉट ग्रेटर दैन" (<=) ऑपरेटर का उपयोग कैसे करें?

    MySQL में नॉट ग्रेटर दैन (नहीं अधिक) तुलना के लिए <= (कम या बराबर) ऑपरेटर का उपयोग किया जाता है। यह सरल और मानक SQL सिंटैक्स है। सिंटैक्स SELECT * FROM your_table_name WHERE your_column_name <= value; व्यावहारिक उदाहरण छात्रों के अंकों वाली एक टेबल बनाते हैं: INSERT INTO DemoTable1480 VALUE

  1. - MySQL में आरक्षित शब्द 'order' को टेबल नाम के रूप में उपयोग करने के लिए बैकटिक्स

    MySQL में ORDER एक आरक्षित शब्द (reserved word) है। इसे टेबल या कॉलम नाम के रूप में उपयोग करने के लिए बैकटिक्स (`) से घेरना आवश्यक है। समस्या CREATE TABLE order (StudentId INT); ERROR 1064: You have an error in your SQL syntax near order समाधान: बैकटिक्स का उपयोग CREATE TABLE `order` (StudentId

  1. - MySQL में न्यूमेरिक यूज़र-डिफ़ाइंड वेरिएबल के साथ ORDER BY कैसे करें?

    MySQL में डायनामिक कॉलम नाम के साथ ORDER BY करने के लिए, यूज़र-डिफ़ाइंड वेरिएबल और PREPARED STATEMENT का उपयोग करें। यह तब उपयोगी होता है जब कॉलम का नाम रनटाइम पर तय होता है। उदाहरण: वेरिएबल के साथ डायनामिक ORDER BY डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1898 (Number INT); डेटा इन्सर्ट