Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Truy vấn danh sách giá trị với IN và ORDER BY FIELD trong MySQL

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').