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.