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

Chọn hàng MySQL theo thứ tự của mệnh đề IN

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