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

MySQL में ORDER BY कीवर्ड मैच कैसे करें?

MySQL में CASE और INSTR() का उपयोग करके कीवर्ड-आधारित कस्टम सॉर्टिंग

जब आपको किसी टेक्स्ट कॉलम में विशिष्ट कीवर्ड की उपस्थिति या स्थिति के आधार पर परिणाम क्रमबद्ध करने हों, तो CASE स्टेटमेंट के साथ INSTR() फ़ंक्शन का उपयोग करें।

उदाहरण के साथ पूर्ण कार्यान्वयन

आइए पहले एक टेबल बनाते हैं:

mysql> CREATE TABLE DemoTable602 (GameName TEXT);

रिकॉर्ड डालना

mysql> INSERT INTO DemoTable602 VALUES('Candy cash game'), ('Pubg'), ('cash Candy game'), ('subway');

सभी रिकॉर्ड प्रदर्शित करना

mysql> SELECT * FROM DemoTable602;

आउटपुट:

+-----------------+
| GameName        |
+-----------------+
| Candy cash game |
| Pubg            |
| cash Candy game |
| subway          |
+-----------------+
4 rows in set (0.00 sec)

कीवर्ड मैच के साथ ORDER BY क्वेरी

mysql> SELECT * FROM DemoTable602
ORDER BY
    CASE WHEN INSTR(GameName, 'Candy') = 0 THEN 1 ELSE 0 END,
    INSTR(GameName, 'cash') DESC;

आउटपुट:

+-----------------+
| GameName        |
+-----------------+
| Candy cash game |
| cash Candy game |
| Pubg            |
| subway          |
+-----------------+
4 rows in set (0.00 sec)

व्याख्या:

  1. पहला ORDER BY क्लॉज: CASE WHEN INSTR(GameName, 'Candy') = 0 THEN 1 ELSE 0 END
    • INSTR() सबस्ट्रिंग की स्थिति लौटाता है (नहीं मिलने पर 0)
    • 'Candy' वाले रिकॉर्ड को 0 (उच्च प्राथमिकता) मिलता है
    • 'Candy' न रखने वालों को 1 (निम्न प्राथमिकता) मिलता है
  2. दूसरा ORDER BY क्लॉज: INSTR(GameName, 'cash') DESC
    • 'cash' की स्थिति के अनुसार अवरोही क्रम
    • पहले आने वाले 'cash' को उच्च प्राथमिकता

परिणाम क्रम तर्क:

  • "Candy cash game" - 'Candy' है (प्राथमिकता 0), 'cash' स्थिति 6 पर
  • "cash Candy game" - 'Candy' है (प्राथमिकता 0), 'cash' स्थिति 1 पर (उच्च)
  • "Pubg" - 'Candy' नहीं (प्राथमिकता 1)
  • "subway" - 'Candy' नहीं (प्राथमिकता 1)

उन्नत पैटर्न: एकाधिक कीवर्ड प्राथमिकता

SELECT * FROM products
ORDER BY
    CASE WHEN name LIKE '%premium%' THEN 1
         WHEN name LIKE '%pro%' THEN 2
         WHEN name LIKE '%basic%' THEN 3
         ELSE 4 END,
    name;

यह उत्पादों को प्रीमियम → प्रो → बेसिक → अन्य के क्रम में सॉर्ट करता है।

  1. - MySQL में मल्टी-टेबल DELETE करें

    संबंधित टेबल से मिलान करने वाली पंक्तियों को हटाने के लिए अलग-अलग DELETE स्टेटमेंट निष्पादित करें (या जॉइन के साथ मल्टी-टेबल DELETE सिंटैक्स का उपयोग करें)। पहली टेबल बनाना और डेटा डालना CREATE TABLE DemoTable1 (Id INT, Name VARCHAR(20)); Query OK, 0 rows affected (0.63 sec) INSERT INTO DemoTabl

  1. - MySQL में पहले अक्षर के आधार पर ORDER BY कैसे करें?

    परिचय MySQL में किसी कॉलम के पहले अक्षर के आधार पर रिकॉर्ड्स को क्रमबद्ध करने के लिए ORDER BY CASE स्टेटमेंट का उपयोग किया जाता है। यह तब उपयोगी होता है जब आपको किसी विशेष अक्षर से शुरू होने वाले रिकॉर्ड्स को प्राथमिकता देनी हो। उदाहरण: टेबल बनाना और डेटा डालना ); Query OK, 0 rows affected (2.26 s

  1. - MySQL में कस्टम सॉर्टिंग करें

    MySQL में कस्टम सॉर्टिंग करने के लिए ORDER BY FIELD() का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> Id int -> ); Query OK, 0 rows affected (0.82 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(101); Q