IF()機能を使用して条件付きでソートすることができます。 IF()
状態のドキュメント:
IF(expr1,expr2,expr3)
expr1がTRUEである場合には(expr1の<> 0とexpr1の<> NULL)をIF()は expr2のを返します。それ以外の場合はexpr3を返します。 IF()は、それが使用されているコンテキストに応じて数値または文字列 の値を返します。
ですから、このような上部にある特定の要素をソートするためにそれを使用することができます:
SELECT *
FROM fruit
ORDER BY
IF(name = 'Peach', 0, 1),
IF(name = 'Apple', 0, 1),
IF(name = 'Apricot', 0, 1),
name DESC
これが最初の服用最高の優先順位で、注文のシリーズです。したがってname='Peach'
の場合、値は0になります。他のすべての値は1になります。デフォルトのASC順序では、0が1よりも前に来るので、これは "Peach"がリストの先頭になることを保証します。シリーズの2番目のソートは、最初のソートのためにタイを解除する方法を指定します。この場合、すべての要素は値 '1'の最初のソートで 'Peach'タイを排除します。そして、この場合、「Apple」は、実際には総合リストの第2位である同調リストのトップにプッシュされます。 Etc ...終わりまで最後の 'DESC名前'。
他の答えが指摘するように、CASE()はIF()
Sの一連の代替物である:
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
最初のバージョンは、値= compare_value結果を返します。 2番目のバージョンは、最初の条件が の場合の結果を返します。一致する結果値がなかった場合、ELSE後の結果は 、ELSE部分がない場合はNULLです。
select *
from fruit
order by
case name
when 'Peach' then 1
when 'Apple' then 2
when 'Apricot' then 3
else 4
end,
name
任意のSQLデータベースで作業する必要があります。