我有这个查询,我想保留顺序
SELECT a FROM TABLE WHERE id in (2,45, 87, 10,12, 41, 29)
现在我想要按这个顺序的a值,我的意思是a for 2,然后是a for 45,然后是a for 87。我如何在sql中完成这个
最佳答案
在 MySQL 中,您可以使用 ORDER BY FIELD :
SELECT a
FROM yourtable
WHERE id IN (2, 45, 87, 10, 12, 41, 29)
ORDER BY FIELD (id, 2, 45, 87, 10, 12, 41, 29)
在不支持 FIELD 的数据库中,您可以改用 CASE 表达式:
SELECT a
FROM yourtable
WHERE id IN (2, 45, 87, 10, 12, 41, 29)
ORDER BY CASE
WHEN id = 2 THEN 1
WHEN id = 45 THEN 2
WHEN id = 87 THEN 3
WHEN id = 10 THEN 4
WHEN id = 12 THEN 5
WHEN id = 41 THEN 6
WHEN id = 29 THEN 7
END
关于sql - 查询时保留顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10266082/