Mặc định IN() không giữ thứ tự các giá trị. Để chọn hàng theo đúng thứ tự trong mệnh đề IN, sử dụng hàm FIND_IN_SET() trong ORDER BY.
Cú pháp
SELECT * FROM ten_bang WHERE ten_cot IN (gia_tri1, gia_tri2, ...) ORDER BY FIND_IN_SET(ten_cot, 'gia_tri1,gia_tri2,...');
Ví dụ minh họa
Tạo bảng và chèn dữ liệu:
mysql> CREATE TABLE InDemo (
-> CodeId INT,
-> Name VARCHAR(20)
-> );
mysql> INSERT INTO InDemo VALUES(1, 'John');
mysql> INSERT INTO InDemo VALUES(2, 'Carol');
mysql> INSERT INTO InDemo VALUES(3, 'Sam');
mysql> INSERT INTO InDemo VALUES(4, 'Bob');
Truy vấn theo thứ tự tùy chỉnh (1,3,2,4):
mysql> SELECT tbl.*
-> FROM InDemo tbl
-> WHERE tbl.CodeId IN (1,3,2,4)
-> ORDER BY FIND_IN_SET(tbl.CodeId, '1,3,2,4');
Kết quả (theo đúng thứ tự 1,3,2,4):
+--------+-------+ | CodeId | Name | +--------+-------+ | 1 | John | | 3 | Sam | | 2 | Carol | | 4 | Bob | +--------+-------+
Nếu không dùng ORDER BY FIND_IN_SET, kết quả sẽ được sắp xếp theo CodeId mặc định (1,2,3,4).