FIND_IN_SET() से कस्टम क्रम में परिणाम प्राप्त करें
IN क्लॉज डिफ़ॉल्ट रूप से क्रम की गारंटी नहीं देता। FIND_IN_SET() फ़ंक्शन का उपयोग ORDER BY में करके निर्दिष्ट क्रम में परिणाम प्राप्त करें।
सिंटैक्स
SELECT * FROM yourTableName WHERE id IN (val1, val2, val3) ORDER BY FIND_IN_SET(id, 'val1,val2,val3');
उदाहरण: टेबल और डेटा
mysql> CREATE TABLE returnRecordSetOrderDemo (Id INT, Name VARCHAR(20));
mysql> INSERT INTO returnRecordSetOrderDemo VALUES (100,'John'), (130,'Carol'), (103,'Bob'), (134,'Sam'), (102,'Larry'), (145,'David');
डेटा
+------+-------+ | Id | Name | +------+-------+ | 100 | John | | 130 | Carol | | 103 | Bob | | 134 | Sam | | 102 | Larry | | 145 | David | +------+-------+
कस्टम क्रम क्वेरी (100, 145, 103, 130 क्रम में)
mysql> SELECT * FROM returnRecordSetOrderDemo
-> WHERE Id IN (100, 145, 103, 130)
-> ORDER BY FIND_IN_SET(Id, '100,145,103,130');
परिणाम (निर्दिष्ट क्रम में)
+------+-------+ | Id | Name | +------+-------+ | 100 | John | | 145 | David | | 103 | Bob | | 130 | Carol | +------+-------+
FIND_IN_SET विवरण
FIND_IN_SET(str, strlist)- strlist में str की स्थिति लौटाता है (1-आधारित)- नहीं मिलने पर 0 लौटाता है
- स्ट्रिंग सूची कॉमा-अलग होनी चाहिए (कोई स्पेस नहीं)
- केस-सेंसिटिव तुलना करता है
वैकल्पिक: FIELD() फ़ंक्शन
ORDER BY FIELD(Id, 100, 145, 103, 130)
FIELD() संख्यात्मक तुलना करता है, FIND_IN_SET() स्ट्रिंग तुलना।