首頁 > 資料庫 > mysql教程 > 為什麼當 `base_price` 為 0 時,我的 MySQL CASE WHEN 語句選擇了錯誤的條件?

為什麼當 `base_price` 為 0 時,我的 MySQL CASE WHEN 語句選擇了錯誤的條件?

Mary-Kate Olsen
發布: 2024-12-25 02:02:09
原創
896 人瀏覽過

Why Does My MySQL CASE WHEN Statement Choose the Wrong Condition When `base_price` is 0?

在MySQL 中正確使用CASE..WHEN 語句

在MySQL 中,CASE..WHEN 語句允許您評估不同的條件和值根據每個條件傳回特定結果。但是,正確使用它以避免意外結果很重要。

問題:

當執行CASE..WHEN 語句來取得base_price 為0 的記錄時,為什麼選擇值為3 的條件而不是第一個條件,即使指定的值為0?

答案:

問題出在CASE語句的語法。在提供的查詢中:

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
登入後複製

語句評估條件並傳回第一個符合條件。但是,語法不正確,因為列名 course_enrollment_settings.base_price 在 CASE 語句之後立即重複。這會導致語句將其自身結果與其餘條件進行比較,從而導致始終選擇 3 個條件。

要解決此問題,請從該點刪除列名稱:

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

CASE 語句現在可以正確評估條件,無需不必要的重複,確保達到預期結果。

以上是為什麼當 `base_price` 為 0 時,我的 MySQL CASE WHEN 語句選擇了錯誤的條件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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