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

MySQL में IN() ऑपरेटर का उपयोग करके कस्टम क्रम में मान चुनना

MySQL में किसी कॉलम के मानों को कस्टम क्रम में चुनने के लिए (डिफ़ॉल्ट क्रमबद्धता के बजाय), WHERE column IN (val1, val2, ...) के साथ ORDER BY FIELD() का उपयोग करें।

सिंटैक्स

SELECT column FROM table 
WHERE column IN (val1, val2, val3)
ORDER BY FIELD(column, val1, val2, val3);

व्यावहारिक उदाहरण

1. टेबल बनाएं और डेटा डालें

mysql> CREATE TABLE DemoTable727 (Name VARCHAR(100), Score INT);
Query OK, 0 rows affected (0.88 sec)

mysql> INSERT INTO DemoTable727 VALUES 
('Chris', 45), ('Robert', 89), ('Carol', 94), 
('David', 93), ('Mike', 78), ('Sam', 67);
Query OK, 6 rows affected (0.18 sec)

2. सभी रिकॉर्ड्स देखें

mysql> SELECT * FROM DemoTable727;
+--------+-------+
| Name   | Score |
+--------+-------+
| Chris  | 45    |
| Robert | 89    |
| Carol  | 94    |
| David  | 93    |
| Mike   | 78    |
| Sam    | 67    |
+--------+-------+
6 rows in set (0.00 sec)

3. कस्टम क्रम में चुनें (Robert, David, Sam)

mysql> SELECT Score FROM DemoTable727 
WHERE Name IN ('Robert', 'David', 'Sam')
ORDER BY FIELD(Name, 'Robert', 'David', 'Sam');
+-------+
| Score |
+-------+
| 89    |  -- Robert
| 93    |  -- David
| 67    |  -- Sam
+-------+
3 rows in set (0.00 sec)

FIELD() फ़ंक्शन व्याख्या

FIELD(str, str1, str2, str3, ...)
-- str की स्थिति लौटाता है str1, str2, str3... सूची में (1-आधारित)
-- नहीं मिलने पर 0 लौटाता है

SELECT FIELD('David', 'Robert', 'David', 'Sam');  -- 2 लौटाता है

ORDER BY FIELD के बिना (डिफ़ॉल्ट क्रम)

mysql> SELECT Score FROM DemoTable727 WHERE Name IN ('Robert', 'David', 'Sam');
+-------+
| Score |
+-------+
| 67    |  -- Sam (वर्णमाला क्रम)
| 89    |  -- Robert
| 93    |  -- David
+-------+

उन्नत: कस्टम क्रम के साथ सभी कॉलम्स

SELECT * FROM DemoTable727 
WHERE Name IN ('Robert', 'David', 'Sam')
ORDER BY FIELD(Name, 'Robert', 'David', 'Sam');

CASE WHEN विकल्प (अधिक लचीला)

SELECT * FROM DemoTable727 
WHERE Name IN ('Robert', 'David', 'Sam')
ORDER BY CASE Name
    WHEN 'Robert' THEN 1
    WHEN 'David' THEN 2
    WHEN 'Sam' THEN 3
    ELSE 4
END;

उपयोग के मामले

  • रिपोर्ट में विशिष्ट क्रम में श्रेणियाँ दिखाना
  • प्राथमिकता-आधारित क्रमबद्धता (High, Medium, Low)
  • स्थिति क्रम: Pending, Processing, Shipped, Delivered
  • किसी अन्य टेबल/सूची से क्रम प्राप्त करना

सबक्वेरी से क्रम प्राप्त करें

SELECT * FROM products 
WHERE category IN (SELECT name FROM categories ORDER BY priority)
ORDER BY FIELD(category, (SELECT GROUP_CONCAT(name ORDER BY priority) FROM categories));
  1. - MySQL में अलग कॉलम वाली टेबल में रिकॉर्ड कैसे कॉपी करें?

    MySQL में एक टेबल से दूसरी टेबल में डेटा कॉपी करने के लिए, जब कॉलम नाम या संरचना अलग हो, तो INSERT INTO ... SELECT स्टेटमेंट का उपयोग करें। यह कॉलम मैपिंग को स्पष्ट रूप से परिभाषित करने की अनुमति देता है। उदाहरण: अलग कॉलम नामों के साथ डेटा कॉपी स्रोत टेबल बनाएं (ऑटो-इन्क्रीमेंट प्राइमरी की के साथ)

  1. - MySQL में IN() क्लॉज़ के साथ एक क्वेरी में रिकॉर्ड कैसे डिलीट करें?

    MySQL में एक ही क्वेरी में एकाधिक विशिष्ट रिकॉर्ड डिलीट करने के लिए, DELETE स्टेटमेंट के साथ IN() ऑपरेटर का उपयोग करें। यह एकाधिक DELETE स्टेटमेंट चलाने से अधिक कुशल और पठनीय है। उदाहरण: विशिष्ट StudentId वाले रिकॉर्ड डिलीट करना डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1922 ( StudentI

  1. - MySQL में मान 0 होने पर दूसरे कॉलम का मान कैसे चुनें?

    IF() फ़ंक्शन का उपयोग यदि किसी कॉलम का मान 0 है तो दूसरे कॉलम का मान लेने के लिए IF() फ़ंक्शन प्रयोग करें: select IF(yourColumnName1=0, yourColumnName2, yourColumnName1) as anyAliasName from yourTableName; टेबल बनाना और डेटा डालना insert into demo30(value,original_value) values(30,0); डेटा देखना