FIELD() ফাংশন দিয়ে কাস্টম সর্টিং অর্ডার
MySQL-এ IN() ক্লজ রো ফিল্টার করে কিন্তু ফলাফল ডিফল্ট অর্ডারে (সাধারণত PRIMARY KEY অনুযায়ী) আসে। ORDER BY FIELD() ব্যবহার করে IN-এ দেওয়া ক্রম অনুযায়ী ফলাফল সাজানো যায়।
টেবিল ও ডেটা
mysql> CREATE TABLE DemoTable (Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, FirstName VARCHAR(100));
mysql> INSERT INTO DemoTable(FirstName) VALUES('Chris'), ('Robert'), ('Mike'), ('Sam'), ('Carol'), ('David');
সব রেকর্ড
+----+-----------+ | Id | FirstName | +----+-----------+ | 1 | Chris | | 2 | Robert | | 3 | Mike | | 4 | Sam | | 5 | Carol | | 6 | David | +----+-----------+
IN ক্লজ + ORDER BY FIELD
mysql> SELECT FirstName FROM DemoTable WHERE Id IN(4,5,6) ORDER BY FIELD(Id, 4,5,6);
+-----------+ | FirstName | +-----------+ | Sam | | Carol | | David | +-----------+
ব্যাখ্যা
WHERE Id IN(4,5,6)— ID ৪, ৫, ৬ ফিল্টার।ORDER BY FIELD(Id, 4,5,6)— Id=4 কে ১লocation, Id=5 কে ২য়, Id=6 কে ৩য় লোকেশনে সাজায়।FIELD(str, val1, val2, ...)— str যেকোনো val-এ ম্যাচ করলে সেটি ১-বেসড ইনডেক্স রিটার্ন করে, না পেলে ০।
ব্যবহার ক্ষেত্র
- UI-তে ইউজার-ডিফাইনড সর্ট অর্ডার।
- প্রিয়রিটি-ভিত্তিক সাজানো (যেমন: STATUS IN('urgent','high','normal') ORDER BY FIELD(status,'urgent','high','normal'))।