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 表達式可以準確地評估條件。
以上是如何避免歧義並正確使用 MySQL 中的 CASE..WHEN 語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!