这是一个查询:
SELECT *
FROM table
WHERE id = 1
OR id = 100
OR id = 50
请注意,我按此顺序提供了ID:1,100,50。
我希望行按此顺序返回:1,100,50。
目前,我回来了1,50,100 - 基本上按升序排列。假设表中的行也按升序插入。
答案 0 :(得分:3)
使用MySQL特定的FIND_IN_SET函数:
SELECT t.*
FROM table t
WHERE t.id IN (1, 100, 50)
ORDER BY FIND_IN_SET(CAST(t.id AS VARCHAR(8)), '1,100,50')
答案 1 :(得分:2)
另一种方法是将列表放在子查询中:
select table.*
from table join
(select 1 as id, 1 as ordering union all
select 100 as id, 2 as ordering union all
select 50 as id, 3 as ordering
) list
on table.id = list.id
order by list.ordering
答案 2 :(得分:0)
您可以使用ORDER BY
执行此操作:
ORDER BY
id = 1 DESC, id = 100 DESC, id = 50 DESC
0
在1
之前的ORDER BY
之前。
答案 3 :(得分:0)
试试这个
SELECT *
FROM new
WHERE ID =1
OR ID =100
OR ID =50
ORDER BY ID=1 DESC,ID=100 DESC,ID=50 DESC ;
答案 4 :(得分:0)
... WHERE id IN(x,y,x)ORDER BY FIELD(id,x,y,z)