MySQL में FIND_IN_SET() का उपयोग करके IN क्लॉज के क्रम में परिणाम प्राप्त करना
डिफ़ॉल्ट रूप से IN() क्लॉज परिणामों को सॉर्ट कर देता है। मूल क्रम बनाए रखने के लिए FIND_IN_SET() का उपयोग करें।
सिंटैक्स
SELECT yourAlias.* FROM yourTableName yourAlias WHERE yourAlias.yourColumnName IN (value1, value2, ...) ORDER BY FIND_IN_SET(yourAlias.yourColumnName, 'value1,value2,...');
उदाहरण
टेबल बनाएं:
mysql> create table InDemo (
-> CodeId int,
-> Name varchar(20)
-> );
डेटा डालें:
mysql> insert into InDemo values(1, 'John'); mysql> insert into InDemo values(2, 'Carol'); mysql> insert into InDemo values(3, 'Sam'); mysql> insert into InDemo values(4, 'Bob');
क्रम: 1, 3, 2, 4 में परिणाम प्राप्त करें:
mysql> select tbl.* from InDemo tbl
-> where tbl.CodeId in (1, 3, 2, 4)
-> ORDER BY FIND_IN_SET(tbl.CodeId, '1,3,2,4');
परिणाम:
+--------+-------+ | CodeId | Name | +--------+-------+ | 1 | John | | 3 | Sam | | 2 | Carol | | 4 | Bob | +--------+-------+
महत्वपूर्ण नोट्स
FIND_IN_SET()स्ट्रिंग में मान की स्थिति लौटाता है (1-आधारित)- मानों में कॉमा नहीं होना चाहिए
- बड़े डेटासेट के लिए प्रदर्शन प्रभाव हो सकता है
- MySQL 8.0+ में
FIELD()फ़ंक्शन भी उपयोग कर सकते हैं:ORDER BY FIELD(CodeId, 1, 3, 2, 4)