Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL Query รายการค่าที่กำหนดด้วย IN และ ORDER BY FIELD

ใช้ 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   |
+----+-------+------+

ประโยชน์: ควบคุมลำดับการแสดงผลไม่ตามลำดับตัวเลข/ตัวอักษรธรรมดา