ホームページ >データベース >mysql チュートリアル >CASE 式はどのようにして SQL 結果を特定の値で並べ替えることができるのでしょうか?

CASE 式はどのようにして SQL 結果を特定の値で並べ替えることができるのでしょうか?

DDD
DDDオリジナル
2025-01-08 17:57:41741ブラウズ

How Can a CASE Expression Order SQL Results by Specific Values?

CASE 式を使用して SQL 結果を特定の値で並べ替えます

テーブルからデータを取得する場合、多くの場合、複数の値に基づいて結果を特定の順序で並べ替える必要があります。この場合のタスクは、指定されたキーとインデックスのないフィールドに基づいてテーブルからレコードを抽出し、結果を特定の順序の複数の値で並べ替えることです。

この要件を満たすために、従来の ORDER BY 構文を使用する代わりに CASE 式を使用して、目的の順序付けを実現できます。 CASE 式の構文は次のとおりです:

<code class="language-sql">CASE
   WHEN condition1 THEN value1
   WHEN condition2 THEN value2
   ...
   ELSE valueN
END</code>

この例では、CASE 式を使用して、x_field の各値に特定の順序を割り当てます。たとえば、値「f」、「p」、「i」、「a」には、それぞれシーケンス番号 1、2、3、4 が割り当てられます。これらの特定の値と一致しないその他の値には、デフォルトのシーケンス番号 5 が割り当てられます。

CASE 式を SQL クエリに追加する方法の例を次に示します。

<code class="language-sql">SELECT *
FROM table
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 式を使用すると、結果は割り当てられたシーケンス番号に従って並べ替えられ、指定されたシーケンス内の値 'f'、'p'、'i'、'a' が効果的に並べ替えられます。

以上がCASE 式はどのようにして SQL 結果を特定の値で並べ替えることができるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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