我有一个问题:
SELECT * FROM products WHERE id IN (1,2,3)
返回:
ID | Title
1 | Bla
2 | Bla2
3 | Bla3
如果我将查询更改为:
SELECT * FROM products WHERE id IN (2,3,1)
我仍然得到:
ID | Title
1 | Bla
2 | Bla2
3 | Bla3
如何更改查询以获取:
ID | Title
2 | Bla2
3 | Bla3
1 | Bla
对于第二个查询?换句话说,按IN查询中的项目顺序排序结果?是否可以这样说:
ORDER BY ID (2,3,1)
答案 0 :(得分:3)
您可以使用以下内容:
SELECT *
FROM products
WHERE id IN (2,3,1)
ORDER BY FIND_IN_SET(id, '2,3,1')
或者您也可以通过以下方式订购:
ORDER BY FIELD(id, 3,2,1)
请参阅小提琴here。
答案 1 :(得分:3)
您可以在CASE
子句中使用ORDER BY
表达式:
SELECT *
FROM products
WHERE id IN (2,3,1)
order by
case id
when 2 then 0
when 3 then 1
when 1 then 2
else 3
end
答案 2 :(得分:0)
你必须使用ORDER BY <ASC/DESC>
SELECT * FROM products WHERE id IN (1,2,3) order by id desc