了解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 語句有兩種形式:一種有目標列名,另一種不帶目標列名。在這種情況下,需要使用搜尋條件的第二種形式。
以上是如何正確使用MySQL的CASE..WHEN語句以避免意外結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!