sql---case...when...
时间:2021-07-22
本文章向大家介绍sql---case...when...,主要包括sql---case...when...使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
"""
使用情况:等值转换,范围转换,列转行
操作方式:两种
1:将case后的字段值与when后面的值进行比较,简单分类
select 字段1, 字段2,
case 字段3
when 值1 then 新值
when 值2 then 新值
end as 重新命名字段3的名字
from table
where ……
order by ……
2:case后无值,根据when逻辑表达式判定
select 字段1, 字段2,
case
when 字段 > 值1 then 新值
when 字段 < 值1 then 新值
else 新值
end as 重新命名字段3的名字
from table
where ……
order by ……
"""
原始数据展示
select * from one_buyer
范围转换
select id,name,case when the_times >=70 then 'young' else 'old' end as age from one_buyer;
等值转换
select id,name,case ser_id_id when 1 then 'fenda' when 2 then 'baisuishan' else 'kele' end as goods from one_buyer
范围转换 --- 两个语句同样的效果
update one_buyer set gender = case gender > 70 when true then 1 else 0 end; update one_buyer set gender = case when gender > 70 then 1 else 0 end;
行转列
"""
5,6,7为列转行,进阶语句,最终执行7将生成列转行视图,6则将查询结果返回,6为5的分组进阶
参考链接:https://blog.csdn.net/weixin_44770933/article/details/106992881?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242
"""
原始数据
sql5 = "select name, case when grade = 'primary' then rate else 0.00 end as 'primary' , case when grade = 'middle' then rate else 0.00 end as 'middle' , case when grade = 'high' then rate else 0.00 end as 'high' from mst_class;"
增加分组,并取最大值
sql6 = "select name, max(case when grade = 'primary' then rate else 0.00 end) as 'primary' , max(case when grade = 'middle' then rate else 0.00 end) as 'middle' , max(case when grade = 'high' then rate else 0.00 end) as 'high' from mst_class group by name"
创建视图容器
sql7 = "create view class_grade as select name, max(case when grade = 'primary' then rate else 0.00 end) as 'primary' , max(case when grade = 'middle' then rate else 0.00 end) as 'middle' , max(case when grade = 'high' then rate else 0.00 end) as 'high' from mst_class group by name"
补充:
"""
1. IF(expr1,expr2,expr3):如果第一个条件为True,则返回第二个参数,否则返回第三个
2. ifnull(expr1,expr2) 判断是否为空:假如第一个参数为null,则返回第二个参数;否则直接返回第一个参数的值
此处不上图了
"""
sql8 = "select id,name,if(gender=1,'man','women') as sex from one_buyer" sql9 = "select id,name,case gender =1 when true then 'man' else 'women' end as sex from one_buyer" sql10 = "select id,name,ifnull(the_user,'ttoia') as the_user from one_ser where id=32" sql11 = "select id,name,case when the_user is null then 'ttoia' else the_user end as user from one_ser where id =32" sql12 = "insert into one_ser(name,price,num,is_sail) values('qiaolezi',456,89,1);" sql13 = "select id,the_user from one_ser where id>30"
待完善。。。
原文地址:https://www.cnblogs.com/little-sailor/p/15043899.html
- Python NLTK 自然语言处理入门与例程
- 漏洞预警 | Apache Struts2 曝任意代码执行漏洞 (S2-045,CVE-2017-5638)
- 详解OSSIM-OSSEC WIN 4771案例
- JSShell:一个基于python的交互式Shell
- golang中操作excel
- 企业安全漏洞通告引擎
- 通过httprouter和redis框架搭建restful api服务
- .NET Core 实现定时抓取博客园首页文章信息并发送到邮箱
- 基于 R 语言和 SPSS 的决策树算法介绍及应用
- Android 8.0 中的安全增强功能
- python2 群发 html 或文本邮件
- windows 安装 storm 及 eclipse 调试 TopN 实例
- shell 学习笔记(16)
- 根据ip查找ISP运营商和归属地的几种方法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 中menu同时显示图标和文字的实现
- android基于SwipeRefreshLayout实现类QQ的侧滑删除
- PopupWindow自定义位置显示的实现代码
- Bootstrap 下拉菜单.dropdown的具体使用方法
- Android访问assets本地json文件的方法
- Android延时操作的三种方法
- 5步教你快速写一个android Router路由框架
- Android 中使用RecyclerView实现底部翻页
- Android中Glide库的使用小技巧总结
- Android Studio手动配置Gradle的方法
- Android仿微信@好友功能 输入@跳转、删除整块
- Android开发实现广告无限循环功能示例
- Android仿微信底部菜单栏效果
- MySQL 案例:Update 死锁详解
- Android 线程之自定义带消息循环Looper的实例