タスク: 結果リストの一番上で指定されたレコードを選択する
私の醜い変種:
(select * from mytable where id = 42)
union all
(select * from mytable where id != 42 order by id)
ansi
クエリバリアントのほかにもmysql
、私にとって非常に興味深いでしょう
ANSI とベンダーの SQL ソリューションに違いはありません
select *
from mytable
order by
CASE WHEN id = 42 THEN 0 ELSE 1 END, id
注: ORDER BY 句のないテーブルまたは SELECT には、保証された、または暗黙の順序はありません。
id が常に正であると仮定して、次を試してください。
select *
from mytable
order by CASE WHEN id = 42 THEN 0 ELSE id END