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

How do I use properly CASE..WHEN in MySQL(如何在 MySQL 中正确使用 CASE..WHEN)
本文介绍了如何在 MySQL 中正确使用 CASE..WHEN的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Here is a demo query, notice it is very simple, Fetches only where base_price is 0, And still, it chooses the condition 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)

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

When run this on my DB, I get:

3 0
3 0
3 0
3 0
3 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 有两种不同的形式,详见手册.在这里,您需要第二种形式,因为您使用的是搜索条件.

CASE has two different forms, as detailed in the manual. Here, you want the second form since you're using search conditions.

这篇关于如何在 MySQL 中正确使用 CASE..WHEN的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)