是否可以在MySQL中的查询结果顶部拉一行?

时间:2011-11-07 11:53:09

标签: mysql

例如

SELECT * FROM foo WHERE (id = 2) OR (id = 14) OR (id = 22)

我总是希望14成为第一排。这在一个查询中是否可行?我知道我可以做两个。

4 个答案:

答案 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