2

我有一个 mysql 查询,我在列表“WHERE IN”中给出列的值,并且我想按照我在列表中给出的顺序对结果进行排序。可能吗?

我的 SQL 查询就像

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

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

4

2 回答 2

4
SELECT *
FROM table_name
WHERE name IN (2,12,56,5,9)
ORDER BY FIELD(id,2,12,56,5,9)

id返回2,12,56,5,9 列表中的索引(位置) 。如果未找到 str,则返回 0。

如果 FIELD() 的所有参数都是字符串,则所有参数都作为字符串进行比较。如果所有参数都是数字,则将它们作为数字进行比较。否则,参数将作为双精度进行比较。

FIELD()

于 2013-05-24T13:44:03.560 回答
1

是的,这是可能的。

SELECT ...
ORDER BY
  CASE
    WHEN id = 2 THEN 1
    WHEN id = 12 THEN 2
    WHEN id = 56 THEN 3
    ...
  END
于 2013-05-24T13:43:06.723 回答