首页 > 数据库 > mysql教程 > 为什么当 `base_price` 为 0 时,我的 MySQL CASE WHEN 语句选择了错误的条件?

为什么当 `base_price` 为 0 时,我的 MySQL CASE WHEN 语句选择了错误的条件?

Mary-Kate Olsen
发布: 2024-12-25 02:02:09
原创
950 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板