【问题标题】:mysql - custom order with IN conditionmysql - 带有 IN 条件的自定义订单
【发布时间】:2018-08-28 04:30:25
【问题描述】:

我的查询是:

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

我想要的和这个顺序完全一样,不是从 1...5 而是从 1,5,4,3,2。 我该怎么做?

【问题讨论】:

标签: mysql sql-order-by


【解决方案1】:

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

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

negatieve 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 列上使用索引。
否定因为提供的表格更难理解

【讨论】:

  • 只针对这个查询 :(,它可能超过 100 行意味着我们做什么?
猜你喜欢
  • 2011-04-05
  • 2022-08-18
  • 2013-08-28
  • 2014-08-13
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
相关资源
最近更新 更多