Kết hợp WHERE ... IN (...) với ORDER BY FIELD(...) để lọc và sắp xếp theo đúng thứ tự danh sách giá trị.
Cú pháp
SELECT *
FROM ten_bang
WHERE cot IN (gt1, gt2, ..., gtn)
ORDER BY FIELD(cot, gt1, gt2, ..., gtn);
Ví dụ minh họa
Tạo bảng ListOfValues:
CREATE TABLE ListOfValues (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(30),
Age INT,
PRIMARY KEY (Id)
);
INSERT INTO ListOfValues (Name, Age) VALUES
('Carol',23), ('Bob',25), ('Sam',26), ('John',20),
('Mike',28), ('David',27), ('Larry',21);
Truy vấn lọc Age ∈ {20,21,23,25,26,27,28} và sắp xếp theo thứ tự đó
SELECT *
FROM ListOfValues
WHERE Age IN (20,21,23,25,26,27,28)
ORDER BY FIELD(Age, 20,21,23,25,26,27,28);
Kết quả:
+----+-------+------+
| Id | Name | Age |
+----+-------+------+
| 4 | John | 20 |
| 7 | Larry | 21 |
| 1 | Carol | 23 |
| 2 | Bob | 25 |
| 3 | Sam | 26 |
| 6 | David | 27 |
| 5 | Mike | 28 |
+----+-------+------+
Ứng dụng: Hiển thị danh sách theo thứ tự ưu tiên nghiệp vụ (ví dụ: trạng thái đơn hàng: 'pending','processing','shipped','delivered').