0

タスク: 結果リストの一番上で指定されたレコードを選択する

私の醜い変種:

(select * from mytable where id = 42)
union all
(select * from mytable where id != 42 order by id)

ansiクエリバリアントのほかにもmysql、私にとって非常に興味深いでしょう

4

2 に答える 2

3

ANSI とベンダーの SQL ソリューションに違いはありません

select *
from mytable 
order by
    CASE WHEN id = 42 THEN 0 ELSE 1 END, id

注: ORDER BY 句のないテーブルまたは SELECT には、保証された、または暗黙の順序はありません。

于 2012-03-06T10:16:42.920 に答える
1

id が常に正であると仮定して、次を試してください。

select *
from mytable 
order by CASE WHEN id = 42 THEN 0 ELSE id END
于 2012-03-06T10:43:06.237 に答える