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

MySQL में ORDER BY बूलियन एक्सप्रेशन से रैप-अराउंड सॉर्टिंग लागू करें

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 उपयोग करें।

  1. - MySQL में एक क्वेरी से पहली टेबल से मान चुनें और दूसरी में डालें

    INSERT ... SELECT के साथ टेबल के बीच डेटा कॉपी करना एक टेबल से डेटा चुनकर सीधे दूसरी टेबल में डालने के लिए INSERT INTO ... SELECT सिंटैक्स का उपयोग करें। यह एक ही क्वेरी में दोनों कार्य करता है। पहली टेबल बनाना और डेटा डालना CREATE TABLE DemoTable1( Value INT ); Query OK, 0 rows affected (0.65

  1. - MySQL UNION SELECT और IN क्लॉज एक ही क्वेरी में

    UNION और IN क्लॉज को संयोजित करना पहले टेबल बनाएं: create table DemoTable1 ( StudentId int, StudentName varchar(20) ); Query OK, 0 rows affected (1.24 sec) रिकॉर्ड डालें: insert into DemoTable1 values(210,Adam); Query OK, 1 row affected (0.11 sec) सभी रिकॉर्ड देखें: select * from DemoTable1; आउटप

  1. - MySQL में SELECT LIKE और CHAR_LENGTH() को एक ही क्वेरी में लागू करें

    आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> Name varchar(20) -> ); Query OK, 0 rows affected (0.49 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(Chris Brown); Query OK, 1 row affected (0.19 sec) mysql> insert