首頁 > 資料庫 > mysql教程 > 如何避免歧義並正確使用 MySQL 中的 CASE..WHEN 語句?

如何避免歧義並正確使用 MySQL 中的 CASE..WHEN 語句?

Patricia Arquette
發布: 2024-12-26 06:17:13
原創
844 人瀏覽過

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

MySQL 中CASE..WHEN 的複雜性

MySQL 中的CASE..WHEN 語句為條件表達式求值提供了一則種通用的方法。但是,在處理某些場景時會出現複雜性。

不明確的 CASE 語法

當 base_price 列在 CASE 表達式中加入前綴時,就會遇到這樣的複雜性。如範例查詢所示,在 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 語句不正確制定的。在 WHEN 之後包含 course_enrollment_settings.base_price,會導致對條件的評估不正確。

解:

要解決此問題,請消除CASE 表達式中的表前綴:

SELECT
   CASE
    WHEN base_price = 0      THEN 1
    ...
    END
登入後複製

兩種形式CASE

CASE語句有兩種不同的形式:

  • 簡單 CASE: 用於涉及相等性檢查的簡單條件表達式。
  • 搜尋 CASE: 使用所提供範例中的搜尋條件。在這種形式中,WHEN 子句中的前綴應被省略。

透過使用正確的形式並刪除多餘的前綴,CASE 表達式可以準確地評估條件。

以上是如何避免歧義並正確使用 MySQL 中的 CASE..WHEN 語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板