我有一个mysql查询,我在列表“WHERE IN”中给出了一个列的值,我想在列表中给出我的结果相同的命令。有可能吗?
我的SQL查询就像
SELECT *
FROM <TABLE NAME>
WHERE id IN (2,12,56,5,9)
我希望结果与我在列表中给出的顺序相同,即2,12,56,5,9
答案 0 :(得分:4)
SELECT *
FROM table_name
WHERE name IN (2,12,56,5,9)
ORDER BY FIELD(id,2,12,56,5,9)
返回2,12,56,5,9列表中id
的索引(位置)。如果未找到str,则返回0。
如果FIELD()的所有参数都是字符串,则所有参数都将作为字符串进行比较。如果所有参数都是数字,则将它们作为数字进行比较。否则,参数将被比较为double。
答案 1 :(得分:1)
是的,这是可能的。
SELECT ...
ORDER BY
CASE
WHEN id = 2 THEN 1
WHEN id = 12 THEN 2
WHEN id = 56 THEN 3
...
END