FIND_IN_SET() দিয়ে কাস্টম অর্ডারিং
MySQL-এ IN ক্লজ ব্যবহার করলে ফলাফল ডিফল্টভাবে इंडেক্স বা প্রাইমারি কি অনুযায়ী সর্ট হয়। নির্দিষ্ট ক্রমে ফলাফল পেতে FIND_IN_SET() ফাংশন ব্যবহার করুন।
সিনট্যাক্স
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');
নির্দিষ্ট ক্রমে: 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 স্ট্রিং-এ মানটি কোন পজিশনে আছে তা রিটার্ন করে, এবং ORDER BY সেটি অনুযায়ী সাজায়।