MySQL-এ নির্দিষ্ট ক্রমে রেকর্ড পেতে WHERE ... IN (...) ব্যবহার করুন; তবে আউটপুট অর্ডার নিশ্চিত করতে ORDER BY FIELD() লাগবে।
উদাহরণ
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
সব রেকর্ড
mysql> SELECT * FROM DemoTable727;
+--------+-------+ | Name | Score | +--------+-------+ | Chris | 45 | | Robert | 89 | | Carol | 94 | | David | 93 | | Mike | 78 | | Sam | 67 | +--------+-------+
নির্দিষ্ট নামের স্কোর (কাস্টম অর্ডার: 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 +-------+
FIELD() ফাংশন
FIELD(str, str1, str2, ...)→ str কোন পজিশনে আছে তা রিটার্ন করে (১-বেসড)- নাও থাকলে ০ রিটার্ন করে
ORDER BY FIELD(col, 'val1', 'val2')দিয়ে কাস্টম সর্ট
নোট: শুধু IN() দিয়ে আউটপুট অর্ডার গ্যারান্টি নেই।