我想检索一个有序的查询结果,但我需要有一些特定的行在列表前面。像堆栈溢出这样的东西,在答案列表中,正确答案总是第一个。ORDER BY条件
认为我需要有ID的1,2,3行是头,通过日期字段排序的休息,是否有可能做这样的事情:
SELECT * FROM foo ORDER BY id IN (1,2,3), created_date
如果不是什么更高效?会有很多行!
SELECT *, 0 AS head FROM foo WHERE id IN (1,2,3)
UNION
SELECT *, 1 AS head FROM foo WHERE id NOT IN (1,2,3)
ORDER BY head, created_date
或
SELECT *, IF(id IN (1,2,3), 0, 1) AS head
ORDER BY head, created_date
(我使用MySQL现在,但我感兴趣的任何其他SQL解决方案。)
我想我必须有一个字段名,只有一个字段名作为一个ORDER BY参数,困我 – sibidiba 2010-03-02 23:07:58