ホームページ >データベース >mysql チュートリアル >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 サイトの他の関連記事を参照してください。