ホームページ >データベース >mysql チュートリアル >MySQL で数値列と検索条件を使用して CASE WHEN を正しく使用する方法は?

MySQL で数値列と検索条件を使用して CASE WHEN を正しく使用する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-02 14:41:401018ブラウズ

How to Correctly Use CASE WHEN in MySQL with Numeric Columns and Search Conditions?

MySQL における CASE..WHEN の適切な使用法

MySQL では、CASE..WHEN 構造を使用すると、ユーザーは複数の条件を評価し、対応する結果を返すことができます。ただし、検索条件と数値列で CASE を使用する場合、一般的な問題が発生します。

元のクエリと問題:

クエリでは、CASE ステートメントはbase_price を評価します。ここで、base_price は 10 進数 (8,0) として定義されています:

SELECT
   CASE course_enrollment_settings.base_price
    WHEN course_enrollment_settings.base_price = 0      THEN 1
    ...
    ELSE 6
   END AS 'calc_base_price',
   course_enrollment_settings.base_price
FROM
    course_enrollment_settings
WHERE course_enrollment_settings.base_price = 0;

この結果クエリは、base_price が 0 の選択されたすべての行で予期しない結果を返します。条件 3 を返します。

3 0
3 0
3 0
3 0
3 0

解決策:

この問題を修正するには、列の仕様を変更します。 CASE の後は削除する必要があります。 CASE の 2 番目の形式では、検索条件を使用する場合、単語 CASE の後に列名は必要ありません。

SELECT
   CASE
    WHEN course_enrollment_settings.base_price = 0      THEN 1
    ...
    ELSE 6
   END AS 'calc_base_price',
   course_enrollment_settings.base_price
FROM
    course_enrollment_settings
WHERE course_enrollment_settings.base_price = 0;

説明:

CASE には 2 つの異なるものがあります。形式: 最初の形式は列名を指定しますが、2 番目の形式は列名を指定しません。検索条件を評価するときに 2 番目の形式を正しく使用すると、MySQL が条件を正しく評価し、意図した結果を返すことができます。

以上がMySQL で数値列と検索条件を使用して CASE WHEN を正しく使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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