【发布时间】:2012-03-06 10:15:10
【问题描述】:
任务:在结果列表顶部选择指定记录
我的丑陋变种:
(select * from mytable where id = 42)
union all
(select * from mytable where id != 42 order by id)
除了ansimysql 的查询变体对我来说也很有趣
【问题讨论】:
任务:在结果列表顶部选择指定记录
我的丑陋变种:
(select * from mytable where id = 42)
union all
(select * from mytable where id != 42 order by id)
除了ansimysql 的查询变体对我来说也很有趣
【问题讨论】:
ANSI 和供应商 SQL 解决方案之间没有区别
select *
from mytable
order by
CASE WHEN id = 42 THEN 0 ELSE 1 END, id
注意:对于没有 ORDER BY 子句的表或 SELECT,没有保证或隐含的顺序
【讨论】:
0, -n, ..., +m?
ansi 怎么样(我对两种最佳变体都很感兴趣)?
假设 id 总是正数,试试:
select *
from mytable
order by CASE WHEN id = 42 THEN 0 ELSE id END
【讨论】: