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

Sắp xếp kết quả theo thứ tự giá trị trong mệnh đề IN() MySQL

Mặc định IN(...) không bảo đảm thứ tự kết quả. Dùng ORDER BY FIELD(cot, gia_tri1, gia_tri2, ...) để sắp xếp đúng theo thứ tự liệt kê trong IN.

Ví dụ minh họa

Tạo bảng:

mysql> CREATE TABLE DemoTable (Number INT);

Chèn dữ liệu:

mysql> INSERT INTO DemoTable VALUES(19), (30), (34), (28), (25), (29), (24);

Xem dữ liệu:

mysql> SELECT * FROM DemoTable;

Kết quả

+--------+
| Number |
+--------+
| 19     |
| 30     |
| 34     |
| 28     |
| 25     |
| 29     |
| 24     |
+--------+

Sắp xếp theo thứ tự: 30, 19, 34, 25, 28, 29, 24:

mysql> SELECT * FROM DemoTable ORDER BY FIELD(Number, 30, 19, 34, 25, 28, 29, 24);

Kết quả

+--------+
| Number |
+--------+
| 30     |
| 19     |
| 34     |
| 25     |
| 28     |
| 29     |
| 24     |
+--------+

Lưu ý: FIELD() trả về vị trí (1-based) của giá trị trong danh sách; giá trị không có trong danh sách trả về 0 (sẽ xếp đầu nếu ORDER BY ASC). Dùng DESC nếu muốn giá trị không có trong danh sách xuống cuối.