ホームページ >データベース >mysql チュートリアル >SQL クエリの結果を特定のシーケンス内の複数の値で並べ替えるにはどうすればよいですか?

SQL クエリの結果を特定のシーケンス内の複数の値で並べ替えるにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-08 18:08:42201ブラウズ

How Can I Order SQL Query Results by Multiple Values in a Specific Sequence?

複数の値を特定の順序で並べ替えます

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。