mysql - 条件为 IN 的自定义订单

mysql - custom order with IN condition

我的查询是:

select * from table where id IN (1,5,4,3,2)

我想要的与此顺序完全相同,不是从 1...5 而是 1,5,4,3,2。 我该怎么做?

MYSQL 的 FIELD 函数和 ORDER BY 可以提供帮助。

SELECT 
 *
FROM 
 [table]
WHERE 
 id IN (1,5,4,3,2)
ORDER BY 
 FIELD(id, 1,5,4,3,2)

否定 FIELD(id, 1,5,4,3,2) 无法使用 id 列上的索引。

或者没有函数 FIELD

SELECT 
 *
FROM (

  SELECT 
   1 AS number
  UNION 
  SELECT 
   5 AS number
  UNION 
  SELECT 
   4 AS number
  UNION 
  SELECT 
   3 AS number
  UNION 
  SELECT 
   2 AS number
) 
 AS numbers
INNER JOIN 
 [table]
ON
 [table].id = numbers.number

positive 可以在 id 列上使用索引。
negative 更难理解,因为交付 table