最初に特定の値を持つ行を返す
問題:
データを取得したいと考えていますテーブルから取得し、特定の列に特定の値を含む行を優先します。残りの行は、別の列に基づいてアルファベット順に続く必要があります。
次の構造を持つテーブルの例を考えてみましょう:
id | name | city |
---|---|---|
1 | George | Seattle |
2 | Sam | Miami |
3 | John | New York |
4 | Amy | New York |
5 | Eric | Chicago |
6 | Nick | New York |
解決策:
特定の値に基づいて行に優先順位を付け、残りの行をアルファベット順に並べるには、次のコマンドを使用します。クエリ:
ORDER BY CASE WHEN city = 'New York' THEN 1 ELSE 2 END, city
説明:
CASE 式は、都市列が指定された値 ('ニューヨーク') と一致する行に優先順位値 1 を割り当てます。他のすべての行には優先順位値 2 が設定されます。これにより、「New York」を含む行が結果セットの最初に表示されるようになります。
ORDER BY 句の 2 番目の部分である city は、city 列に基づいて各優先グループ内の行をアルファベット順にさらに並べ替えます。
このクエリは次の結果を返します:
id | name | city |
---|---|---|
3 | John | New York |
4 | Amy | New York |
6 | Nick | New York |
1 | George | Seattle |
2 | Sam | Miami |
5 | Eric | Chicago |
以上がSQLで特定の値を持つ行に優先順位を付けてアルファベット順に並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。