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

MySQL में शर्त के साथ ORDER BY और SELECT कैसे करें?

कंडीशनल ORDER BY: जीरो वैल्यू अंत में

किसी कॉलम को सॉर्ट करते समय खास मान (जैसे 0) को अंत में रखने और बाकी को नॉर्मल ऑर्डर में रखने के लिए बूलियन एक्सप्रेशन का उपयोग करें।

सिंटैक्स

SELECT * FROM yourTableName 
ORDER BY yourColumnName = 0, yourColumnName;

टेबल बनाना और डेटा इन्सर्ट करना

CREATE TABLE DemoTable1348 (Amount INT);

INSERT INTO DemoTable1348 VALUES(100);
INSERT INTO DemoTable1348 VALUES(0);
INSERT INTO DemoTable1348 VALUES(90);
INSERT INTO DemoTable1348 VALUES(45);
INSERT INTO DemoTable1348 VALUES(0);
INSERT INTO DemoTable1348 VALUES(89);

मौजूदा डेटा

+--------+
| Amount |
+--------+
| 100    |
| 0      |
| 90     |
| 45     |
| 0      |
| 89     |
+--------+

क्वेरी: 0 को अंत में, बाकी आरोही क्रम में

SELECT * FROM DemoTable1348 
ORDER BY Amount = 0, Amount;

आउटपुट

+--------+
| Amount |
+--------+
| 45     |
| 89     |
| 90     |
| 100    |
| 0      |
| 0      |
+--------+

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

  1. Amount = 0 बूलियन एक्सप्रेशन है: TRUE (1) या FALSE (0)
  2. FALSE (0) पहले आता है, TRUE (1) बाद में
  3. तो नॉन-जीरो वैल्यू (FALSE=0) पहले सॉर्ट होते हैं
  4. फिर Amount से आरोही क्रम में

विविधताएं

NULL को अंत में रखना

ORDER BY (ColumnName IS NULL), ColumnName

कई शर्तें

ORDER BY 
    CASE 
        WHEN Status = 'URGENT' THEN 1
        WHEN Status = 'HIGH' THEN 2
        WHEN Status = 'NORMAL' THEN 3
        ELSE 4
    END,
    CreatedDate DESC;

डिसेंडिंग में नॉन-जीरो, फिर जीरो

ORDER BY Amount = 0, Amount DESC;
+--------+
| Amount |
+--------+
| 100    |
| 90     |
| 89     |
| 45     |
| 0      |
| 0      |
+--------+

प्रदर्शन नोट

बूलियन एक्सप्रेशन इंडेक्स उपयोग को रोक सकता है। बड़े डेटासेट के लिए UNION ALL दृष्टिकोण बेहतर हो सकता है:

(SELECT * FROM DemoTable1348 WHERE Amount != 0 ORDER BY Amount)
UNION ALL
(SELECT * FROM DemoTable1348 WHERE Amount = 0);
  1. - MySQL में क्वेरी परिणामों को रैंडम क्रम में ऑर्डर करना और रैंडम पंक्तियां चुनना

    परिचय MySQL में ORDER BY RAND() का उपयोग करके क्वेरी परिणामों को यादृच्छिक (रैंडम) क्रम में क्रमबद्ध किया जा सकता है। LIMIT के साथ संयोजित करके रैंडम नमूना (random sample) प्राप्त किया जा सकता है। सिंटैक्स SELECT * FROM table_name WHERE column_name IN (value1, value2, ...) ORDER BY RAND() LIMIT lim

  1. - MySQL में INSERT INTO SELECT UNION ALL से एक क्वेरी में दो टेबल में चयन और सम्मिलन

    MySQL में INSERT INTO ... SELECT ... UNION ALL ... SELECT का उपयोग करके एक ही क्वेरी में एक टेबल से डेटा चुनकर दूसरी टेबल में एकाधिक पंक्तियां डाल सकते हैं। उदाहरण 1. लक्ष्य टेबल बनाएं ); 2. स्रोत टेबल बनाएं INSERT INTO DemoTable2 VALUES(Chris); 3. एक क्वेरी में चयन और सम्मिलन SELECT Name, 98

  1. - MySQL में INSERT ... SELECT क्वेरी का उपयोग कैसे करें?

    MySQL में INSERT ... SELECT स्टेटमेंट एक ही क्वेरी में एक तालिका से दूसरी तालिका में डेटा कॉपी करने या मानों की गणना करके डालने की अनुमति देता है। सिंटैक्स INSERT INTO target_table (col1, col2, col3, ...) SELECT col1, col2, col3, ... FROM source_table WHERE condition; उदाहरण: मानों को सीधे चुनकर ड