mysql case when的用法是什么

1. 概述

MySQL的 case when 语句用于对一组数据进行根据条件的判断并实施不同的操作。该操作可以利用字面值、函数或者其他表达式,产生复杂的逻辑判断。

case when的语法:

SELECT

CASE expression

WHEN value1 THEN result1

WHEN value2 THEN result2

...

ELSE default_result

END

FROM table

在expression(要比较的值)后,列出了一组value/result对。如果expression的值与列表中的value值相匹配,则返回相应的result。如果没有匹配的值,则返回默认值(default_result)。

2. 用法示例

2.1. 示例1

将order表中的price字段值大于等于3000的行的is_cheap字段的值设置为1,其它行设置为0。

UPDATE order

SET is_cheap =

case when price>=3000 then 1

else 0

end;

2.2. 示例2

查询顾客名,如果顾客订购金额小于5000,则将顾客类型标记为“小客户”,否则标记为“大客户”。

SELECT

name,

CASE

WHEN sum(order_money) < 5000 THEN '小客户'

ELSE '大客户'

END AS customer_type

FROM orders

GROUP BY name

2.3. 示例3

查询学生的总成绩,如果成绩在60分及以上,则输出“及格”,否则输出“不及格”

SELECT

student_name,

sum(score) as total_score,

CASE

WHEN sum(score) >= 60 THEN '及格'

ELSE '不及格'

END AS pass_or_not

FROM scores

GROUP BY student_name

2.4. 示例4

查询订单的总价和优惠后的总价,如果优惠后的总价小于总价的10%,则打上“好买家”的标签并将两个总价及打标签后的结果输出。

SELECT

sum(price) as total_price,

CASE

WHEN sum(price)*0.9 <= sum(discounted_price) THEN '好买家'

ELSE ''

END AS is_good_buyer,

sum(discounted_price) as total_discounted_price

FROM orders

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签