我有一个mysql查询,我在列表“WHERE IN”中给出一个列的值,我想命令我的结果与列表中的相同顺序。可能吗?

时间:2013-05-24 13:42:06

标签: mysql sql

我有一个mysql查询,我在列表“WHERE IN”中给出了一个列的值,我想在列表中给出我的结果相同的命令。有可能吗?

我的SQL查询就像

SELECT * 
FROM <TABLE NAME> 
WHERE id IN (2,12,56,5,9)

我希望结果与我在列表中给出的顺序相同,即2,12,56,5,9

2 个答案:

答案 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。

FIELD()

答案 1 :(得分:1)

是的,这是可能的。

SELECT ...
ORDER BY
  CASE
    WHEN id = 2 THEN 1
    WHEN id = 12 THEN 2
    WHEN id = 56 THEN 3
    ...
  END