ホームページ >データベース >mysql チュートリアル >SQL クエリの結果を特定のシーケンス内の複数の値で並べ替えるにはどうすればよいですか?
複数の値を特定の順序で並べ替えます
SQL では、クエリ結果を複数の値で並べ替えることができますが、これはこれらの値が ORDER BY 句に含まれている必要がある場合に限られます。 (提供された例のように) ORDER BY 句に含まれていない複数の値で並べ替えようとすると、クエリは結果を返しません。
複数の値を特定の順序で並べ替えるには、CASE ステートメントを使用することをお勧めします。
<code class="language-sql">... WHERE x_field IN ('f', 'p', 'i', 'a') ... ORDER BY CASE x_field WHEN 'f' THEN 1 WHEN 'p' THEN 2 WHEN 'i' THEN 3 WHEN 'a' THEN 4 ELSE 5 -- 对IN子句中未包含的值的回退。例如:x_field = 'b' END, id</code>
この例では、CASE ステートメントは、x_field 列の各値に優先順位の数値を割り当てます (「f」は 1、「p」は 2 など)。次に、結果はこの優先度に基づいて並べ替えられ、次に id 列によって並べ替えられ、各優先度レベル内で一意の並べ替えが行われるようになります。
CASE ステートメントを使用すると、複数の値に対して希望の並べ替え順序を指定できます。この例では、結果は CASE ステートメントで指定されているように、'f'、'p'、'i'、および 'a' の順序で並べ替えられます。
以上がSQL クエリの結果を特定のシーケンス内の複数の値で並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。