MYSQL CASE用法
MySQL 中的 CASE
语句是一种流程控制语句,它在 SQL 查询中提供条件逻辑,类似于编程语言中的 if...elseif...else
结构。
CASE
语句有两种主要形式:简单 CASE 表达式和搜索 CASE 表达式。
简单 CASE 表达式
这种形式的 CASE
用来比较一个表达式与一系列值,并根据匹配的情况返回对应的值。
语法如下:
CASE column_name
WHEN value1 THEN result1
WHEN value2 THEN result2
...
ELSE default_result
END
column_name
:是要检查的列名或表达式。value1, value2, ...
:是要与column_name
比较的值。result1, result2, ...
:是当比较为真时返回的值。ELSE default_result
:是可选的,默认情况下返回的值,如果没有匹配项。
搜索 CASE 表达式
搜索 CASE 语句更灵活,可以用于基于任意条件(不仅仅是等于某个值)来返回结果。
语法如下:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
condition1, condition2, ...
:是任意条件表达式。result1, result2, ...
:是当相应条件为真时返回的值。ELSE default_result
:同样是可选的,默认返回值。
示例
假设有一个 employees
表,包含 salary
列,我们想根据薪水范围分类员工:
SELECT
employee_name,
CASE
WHEN salary < 50000 THEN '低薪'
WHEN salary BETWEEN 50000 AND 100000 THEN '中薪'
ELSE '高薪'
END AS salary_category
FROM employees;
在这个例子中,我们使用了搜索 CASE 语句来根据员工的薪水分配类别。
记住,如果没有任何 WHEN 条件为真,并且没有 ELSE 部分,CASE
表达式会返回 NULL。
一个例子:
排序:待整改状态-按时间倒序排>未整改-时间倒叙>已整改/不需要整改-时间倒序
`status` 状态:RECTIFIED 已整改;UN_RECTIFIED 未整改; NORMAL 未发现问题;RECORD_TIME 登记时间; latest_rectify_time 最晚可整改时间
SELECT
`status`, latest_rectify_time
FROM
t_crp_inspection_advert_record
ORDER BY
CASE
WHEN `status` = 'UN_RECTIFIED' AND record_time > DATE_SUB(CURDATE(), INTERVAL 7 DAY) THEN 1
WHEN `status` = 'UN_RECTIFIED' AND record_time <= DATE_SUB(CURDATE(), INTERVAL 7 DAY) THEN 2
WHEN `status` IN ('RECTIFIED ', 'NORMAL') THEN 3
ELSE 4
END,
create_time DESC
原文地址:https://blog.csdn.net/m0_59856692/article/details/140458994
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!