ใช้ IN() กรองค่า และ ORDER BY FIELD() เรียงตามลำดับที่ระบุใน IN
ไวยากรณ์
SELECT * FROM yourTableName WHERE yourColumn IN (val1, val2, ...) ORDER BY FIELD(yourColumn, val1, val2, ...);
ตัวอย่างการใช้งาน
สร้างตาราง ListOfValues:
mysql> CREATE TABLE ListOfValues (
-> Id INT NOT NULL AUTO_INCREMENT,
-> Name VARCHAR(30),
-> Age INT,
-> PRIMARY KEY(Id)
-> );
เพิ่มข้อมูล 7 แถว:
mysql> INSERT INTO ListOfValues(Name, Age) VALUES('Carol',23),('Bob',25),('Sam',26),('John',20),('Mike',28),('David',27),('Larry',21);
ข้อมูลทั้งหมด
+----+-------+------+ | Id | Name | Age | +----+-------+------+ | 1 | Carol | 23 | | 2 | Bob | 25 | | 3 | Sam | 26 | | 4 | John | 20 | | 5 | Mike | 28 | | 6 | David | 27 | | 7 | Larry | 21 | +----+-------+------+
คำสั่งกรอง Age และเรียงตามลำดับที่กำหนด
mysql> SELECT * FROM ListOfValues
-> WHERE Age IN (20,21,23,25,26,27,28)
-> ORDER BY FIELD(Age, 20,21,23,25,26,27,28);
ผลลัพธ์
+----+-------+------+ | Id | Name | Age | +----+-------+------+ | 4 | John | 20 | | 7 | Larry | 21 | | 1 | Carol | 23 | | 2 | Bob | 25 | | 3 | Sam | 26 | | 6 | David | 27 | | 5 | Mike | 28 | +----+-------+------+
ประโยชน์: ควบคุมลำดับการแสดงผลไม่ตามลำดับตัวเลข/ตัวอักษรธรรมดา