了解 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中文网其他相关文章!