ホームページ > データベース > mysql チュートリアル > 予期しない結果を避けるために MySQL の CASE..WHEN ステートメントを正しく使用するにはどうすればよいですか?

予期しない結果を避けるために MySQL の CASE..WHEN ステートメントを正しく使用するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-31 18:56:10
オリジナル
944 人が閲覧しました

How Can I Correctly Use MySQL's CASE..WHEN Statement to Avoid Unexpected Results?

MySQL の CASE..WHEN ステートメントを理解する

MySQL を使用する場合、CASE..WHEN ステートメントは評価のための貴重なツールです。複数の条件があり、それらの条件に基づいて異なる値を返します。ただし、予期しない結果を回避するために、適切に使用する特定の方法があります。

次のクエリを考えてみましょう:

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
ログイン後にコピー

このクエリは、基本価格がゼロのコースを取得し、条件付きで割り当てることを目的としています。価格範囲に基づいて「calc_base_price」の値。ただし、結果は、base_price 0 のすべての行に対して「3」を返します。

これを修正するには、CASE の後の列名を削除することが重要です。

SELECT
   CASE
    WHEN base_price = 0      THEN 1
    ...
    END
ログイン後にコピー

これにより、CASE が確実にステートメントは条件を正しく評価し、各行に適切な値を返します。 CASE ステートメントには 2 つの形式があります。1 つはターゲット列名を含むもので、もう 1 つはターゲット列名を含まないものです。このシナリオでは、検索条件を使用する 2 番目の形式が必要です。

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート