例如
SELECT * FROM foo WHERE (id = 2) OR (id = 14) OR (id = 22)
我总是希望14成为第一排。这在一个查询中是否可行?我知道我可以做两个。
答案 0 :(得分:4)
SELECT *
FROM foo
WHERE id IN ( 2, 14, 22 )
ORDER BY id != 14
答案 1 :(得分:3)
其他人告诉你如何在规定的条件下解决问题,但你应该问自己为什么一开始就有这个要求。
如果您需要按特定顺序显示项目并且希望它由数据库驱动,则可以添加display_order列和ORDER BY。这使您可以在将来更改它。
答案 2 :(得分:1)
试试这个:
SELECT 1 as ordering, * FROM foo WHERE (id = 14)
UNION
SELECT 2 as ordering, * FROM foo WHERE (id = 2) OR (id = 22)
ORDER BY ordering ASC
答案 3 :(得分:0)
您可以使用订单优先级(排序)创建一个列,然后使用ORDER BY
。
SELECT * FROM foo WHERE (id = 2) OR (id = 14) OR (id = 22) ORDER BY ordering