case when then else end
本文参考自mysql操作查询结果case when then else end用法举例,特此说明
简单Case函数
类似与Java中的switch case(一个case一种情况),常用
SQL如下:
select case student_name when 'Jef' then concat(student_name, '.tu') when 'Ran' then concat(student_name, '.ren') else concat(student_name, '.xu') end '姓名' from interest;
更经典的使用场景:已知数据按照另外一种方式进行分组。例如,已知国家和人口,要求按照洲来统计人数
Case搜索函数
上面的SQL等效于下面这种方式:如果条件的字段名是一样的,并且是用于=操作的,建议采用简单case函数,这样比较简洁,但是写判断式还是推荐用这种。
select case when student_name = 'Jef' then concat(student_name, '.tu') when student_name = 'Ran' then concat(student_name, '.ren') else concat(student_name, '.xu') end '姓名' from interest; -- 类似于下面的意思 if () { ... } else if () { ... } else { ... }
更经典的使用场景:可以用这个方法来判断工资的等级,并统计每一等级的人数
注意项:有一个需要注意的问题,case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。
用一个SQL语句完成不同条件的分组
常用语行列转换,使用case进行行列转换
在check中使用case
根据条件有选择的UPDATE
这里是为了避免多条语句更新时带来的逻辑上的问题,使用case进行更新可以用一条语句进行更新
两个表数据是否一致的检查
在case函数中使用合计函数
感悟代码魅力,享受美好人生!