1

結果の最初の行として、region='sample'の行を表示したいと思います。つまり、優先度は他の行よりも高く、一番上にある必要があります。

この結果には、以下のSQLを使用します。

SELECT * FROM works Where region = 'sample' UNION Select * FROM works Where region <> 'sample'

UNIONなしで結果を得る最適な方法はありますか?

4

3 に答える 3

7

あなたは使用することができます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
于 2012-09-23T17:08:23.230 に答える
1
SELECT * FROM works 

order by case region when 'sample' then 1 else 2 end;

それはあなたを助けるかもしれません...

于 2012-09-23T17:08:35.927 に答える
1

まず第一に、ユニオンは注文を保証しません。そのようにしても、順番が合わない可能性があります。したがって、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
于 2012-09-23T17:09:23.727 に答える