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

Sắp xếp theo thứ tự chính xác với WHERE id IN (...) trong MySQL

Mặc định IN không giữ thứ tự. Dùng FIND_IN_SET() trong ORDER BY để sắp xếp theo thứ tự liệt kê trong IN.

Cú pháp:

SELECT * FROM yourTableName
WHERE yourColumnName IN (val1,val2,val3)
ORDER BY FIND_IN_SET(yourColumnName, 'val1,val2,val3');

Tạo bảng:

mysql> CREATE TABLE FindInSetDemo (Id INT, Name VARCHAR(20), Age INT);

Chèn dữ liệu (ID lộn xộn):

mysql> INSERT INTO FindInSetDemo VALUES(10,'John',23), (1,'Carol',21), (4,'Bob',25), (6,'Sam',26), (7,'Maxwell',29), (8,'Mike',22), (2,'David',27), (3,'James',20);

Truy vấn sắp xếp theo thứ tự IN (1,4,6,7):

mysql> SELECT * FROM FindInSetDemo WHERE Id IN (1,4,6,7) ORDER BY FIND_IN_SET(Id, '1,4,6,7');

Kết quả (theo đúng thứ tự 1,4,6,7):

+------+---------+------+
| Id   | Name    | Age  |
+------+---------+------+
| 1    | Carol   | 21   |
| 4    | Bob     | 25   |
| 6    | Sam     | 26   |
| 7    | Maxwell | 29   |
+------+---------+------+