mysql - 如何在 MySQL 中正确使用 CASE..WHEN

这是一个演示查询,注意它很简单,只获取base_price为0的地方, 而且,它仍然选择条件 3:

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

base_pricedecimal(8,0)

在我的数据库上运行它时,我得到:

3 0
3 0
3 0
3 0
3 0

最佳答案

立即删除 CASE 之后的 course_enrollment_settings.base_price:

SELECT
   CASE
    WHEN course_enrollment_settings.base_price = 0      THEN 1
    ...
    END

CASE有两种不同的形式,详见manual .在这里,您需要第二种形式,因为您使用的是搜索条件

https://stackoverflow.com/questions/9588015/

相关文章:

MySQL - 条件外键约束

mysql - 如何在 bash 上运行 MySQL 命令?

mysql - MySQL 是否索引 NULL 值?

mysql - 如何在 Sequel Pro 中执行查询?

sql - 单数还是复数数据库表名?

mysql - 遇到需要满足多个条件的 MySQL Join 问题

mysql - 总锁数超过锁表大小

mysql - SQL 性能 UNION 与 OR

mysql - MySQL中是否可以有基于函数的索引?

mysql - 从 cygwin 连接到 mysql