在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中文網其他相關文章!