我正在使用此查询来选择MySQL中的行
SELECT * FROM `table` WHERE `id` IN (5,2,3,1,4);
现在默认情况下,行将按其id
排序:1, 2, 3, 4, 5
有什么方法可以按查询中的行进行排序,因此顺序应该是:5, 2, 3, 1, 4
?
使用 MySQL 的 FIELD() 函数
SELECT *
FROM `table`
WHERE `id` IN (5,2,3,1,4)
ORDER BY FIELD(`id`, 5,2,3,1,4)
;
您可以使用case
语句自定义排序
SELECT *
FROM table
WHERE id IN ( 5, 2, 3, 1, 4 )
ORDER BY CASE id
WHEN 5 THEN 1
WHEN 2 THEN 2
WHEN 3 THEN 3
WHEN 1 THEN 4
WHEN 4 THEN 5
ELSE 6
END