ホームページ >データベース >mysql チュートリアル >MySQL で曖昧さを避けて CASE..WHEN ステートメントを正しく使用するにはどうすればよいですか?

MySQL で曖昧さを避けて CASE..WHEN ステートメントを正しく使用するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-26 06:17:13849ブラウズ

How to Avoid Ambiguity and Correctly Use CASE..WHEN Statements in MySQL?

MySQL の CASE..WHEN の複雑さ

MySQL の CASE..WHEN ステートメントは、条件式を評価するための汎用性の高い方法を提供します。ただし、特定のシナリオを使用する場合は複雑さが生じます。

あいまいな CASE 構文

そのような複雑さの 1 つは、CASE 式内で Base_price 列が接頭辞として付けられている場合に発生します。クエリの例にあるように、WHEN 句内で course_enrollment_settings.base_price を使用すると、あいまいさが生じます。

クエリ:

SELECT
   CASE course_enrollment_settings.base_price
    WHEN course_enrollment_settings.base_price = 0      THEN 1
    WHEN course_enrollment_settings.base_price<101      THEN 2
    WHEN course_enrollment_settings.base_price>100 AND   
                      course_enrollment_settings.base_price<201 THEN 3
        ELSE 6
   END AS 'calc_base_price',
   course_enrollment_settings.base_price
FROM
    course_enrollment_settings
WHERE course_enrollment_settings.base_price = 0

問題:

このクエリの CASE ステートメントは正しくありません策定された。 course_enrollment_settings.base_price を WHEN の後に含めると、条件が正しく評価されません。

解決策:

この問題を解決するには、CASE 式内のテーブル プレフィックスを削除します。 :

SELECT
   CASE
    WHEN base_price = 0      THEN 1
    ...
    END

の 2 つの形式CASE

CASE ステートメントには 2 つの異なる形式があります:

  • 単純な CASE: 等価性チェックを含む単純な条件式に使用されます。
  • 検索された CASE: 提供された例のような検索条件を使用します。この形式では、WHEN 句内の接頭辞を省略する必要があります。

正しい形式を使用し、冗長な接頭辞を削除することで、CASE 式は条件を正確に評価します。

以上がMySQL で曖昧さを避けて CASE..WHEN ステートメントを正しく使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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