結果の最初の行として、region='sample'の行を表示したいと思います。つまり、優先度は他の行よりも高く、一番上にある必要があります。
この結果には、以下のSQLを使用します。
SELECT * FROM works Where region = 'sample' UNION Select * FROM works Where region <> 'sample'
UNIONなしで結果を得る最適な方法はありますか?
あなたは使用することができますorder
:
SELECT * FROM works
order by case when region = 'sample' then 1 else 2 end
データを別の列で並べ替える場合は、次のように最後に追加できます。
order by case when region = 'sample' then 1 else 2 end, othercolumn
SELECT * FROM works
order by case region when 'sample' then 1 else 2 end;
それはあなたを助けるかもしれません...
まず第一に、ユニオンは注文を保証しません。そのようにしても、順番が合わない可能性があります。したがって、orderby句を使用して実行する必要があります。
簡単
select * from work order by case when region='sample' then 0 else 1 end
地域にインデックスがある場合はより良い
select *,0 as ordb from work where region = 'sample'
union
select *,1 as ordb from work where region <> 'sample'
order by ordb