Case语法

CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;

预制数据

mysql> select * from person;
+----+---------+--------+------+--------+
| id | country | name | age | gender |
+----+---------+--------+------+--------+
| 3 | china | tim | 10 | 1 |
| 7 | usa | kobe | 10 | 1 |
| 8 | usa | james | 20 | 1 |
| 9 | usa | grace | 30 | 0 |
| 10 | japan | monica | 40 | 2 |
+----+---------+--------+------+--------+

Case的场景示例

根据字段查询分组结果

mysql> SELECT id, `name`,  CASE gender WHEN 1 THEN '男'  WHEN 0 THEN '女'  ELSE '其他' END AS gender FROM person;
+----+--------+--------+
| id | name | gender |
+----+--------+--------+
| 3 | tim | 男 |
| 7 | kobe | 男 |
| 8 | james | 男 |
| 9 | grace | 女 |
| 10 | monica | 其他 |
+----+--------+--------+

分组统计

根据不同国家统计用户的性别

mysql> select country,
-> sum(case when gender=1 then 1 else 0 end) as male,
-> sum( case when gender=0 then 1 else 0 end) as female,
-> sum(case when gender>1 then 1 else 0 end) as unknown
-> from person
-> group by country;
+---------+------+--------+---------+
| country | male | female | unknown |
+---------+------+--------+---------+
| china | 1 | 0 | 0 |
| japan | 0 | 0 | 1 |
| usa | 2 | 1 | 0 |
+---------+------+--------+---------+

批量更新

简单Case函数

UPDATE person
SET `status` = CASE id
WHEN 1 THEN 1
WHEN 2 THEN 0
WHEN 3 THEN 0
WHEN 4 THEN 1
END
WHERE id IN (1, 2, 3, 4)

注意事项:一定要有WHERE id IN的限制,否则不在WHEN中的记录就会被置为NULL

Case搜索函数

UPDATE person
SET `status` = CASE
WHEN id%2=1 THEN 1
WHEN id%2=0 THEN 0
END

区别:简单Case函数只能实现相等条件判断,Case搜索函数适合复杂条件判断,比如大于、小于等

MySQL - CASE WHEN的高级用法的更多相关文章

  1. Linux之shell脚本for、while、case语句的高级用法

    1.case语句的用法: [root@ELK-chaofeng test]# cat test3.sh #!/bin/bash while true ;do read -p "please ...

  2. MYSQL CASE WHEN THEN END 用法

    SELECT qr_cash_record.*,CASE WHEN cashrecord_type = 3 THEN (SELECT product_title FROM qr_fundsupport ...

  3. Mysql count(1) group_concat 高级用法(count 过滤条件,group_concat过滤条件)

    1.官方文档: count:COUNT(expr) [over_clause] https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.h ...

  4. SQL server 存储过程 C#调用Windows CMD命令并返回输出结果 Mysql删除重复数据保留最小的id C# 取字符串中间文本 取字符串左边 取字符串右边 C# JSON格式数据高级用法

    create proc insertLog@Title nvarchar(50),@Contents nvarchar(max),@UserId int,@CreateTime datetimeasi ...

  5. MySQL中case when的基本用法总结

    MySQL中case when的基本用法总结原创Backcanhave7 最后发布于2018-12-06 15:14:15 阅读数 439 收藏展开MySQL中的case when有用两种用法,官方文 ...

  6. MySQL case when then 用法

    下面演示一下MYSQL中的CASE WHEN THEN的用法. 一. SELECT MENU_NAME, YXBZ, case YXBZ when 'Y' then '开放' when 'N' the ...

  7. SQL--查询JSON、时间、字符串的高级用法

    SQL--查询JSON.时间.字符串的高级用法 本文章总结SQL的JSON.时间格式.字符串判断转换的使用.核心点还是在于Json字段的提取(1.5).时间的比较(2.2,2.3)以及字符串的查询(3 ...

  8. sqlalchemy(二)高级用法

    sqlalchemy(二)高级用法 本文将介绍sqlalchemy的高级用法. 外键以及relationship 首先创建数据库,在这里一个user对应多个address,因此需要在address上增 ...

  9. fw:sed的高级用法

    转的,找不到原创了.... sed高级用法 <收藏> 首先,应该明白模式空间的定义.模式空间就是读入行所在的缓存,sed对文本行进行的处理都是在这个缓存中进行的.这对接下来 的学习是有帮助 ...

  10. SQL[连载3]sql的一些高级用法

    SQL[连载3]sql的一些高级用法 SQL 高级教程 SQL SELECT TOP SQL SELECT TOP 子句 SELECT TOP 子句用于规定要返回的记录的数目. SELECT TOP ...

随机推荐

  1. 小程序 image 高度自适应及裁剪问题

    在做微信小程序的商品详情页,商品的详情是图片集合,渲染完成后发现图片加载的很不自然,后来我把样式设置宽度 100%,并对 image 组件添加属性 mode="widthFix"解 ...

  2. 密码学—重合指数法Python程序

    重合指数(Ic) 计算重合指数就是用来验证在Kasiski测试法中猜测出来的各种密钥长度哪一个才是最接近真实密钥长度的. 计算重合指数步骤 按照Kasiski测试法猜测的密钥长度分组 ↓ 分好组之后将 ...

  3. C语言:输出大写的三角形字母表(进阶)

    //该程序只支持输入大写字母,输入G,就输出A~G的三角形字母表 /*       从A到Z的输出数量应该是1 3 5 7 9.....       */ 利用这个特性,对空格和字母进行输出 A字母在 ...

  4. JDK源码阅读-------自学笔记(六)(java.util.Arrays用法和描述浅析)

    工具类的使用 要多使用这个类,同时,很多算法包含其中,常见操作排序.查找.填充.打印等. 1.打印数组 ------Arrays.toString() 1 // 整型初始化 2 int[] integ ...

  5. Nokia 5GC 产品概览

    目录 文章目录 目录 Nokia SR OS Nokia NSP NFM-P Nokia 7750 SR-MG 5G User Plane Forwarding Mobile Gateway Non- ...

  6. PageOffice6最简集成代码(.NetCore)

    本文描述了PageOffice产品在.NetCore项目中如何集成调用. 新建.NetCore项目:PageOffice6-Net-Core-Simple 在此项目的"依赖项-包-管理NuG ...

  7. Python:conda install 和pip install的区别

    pip是个安装包的软件,conda是个环境管理的工具.conda能够安装多个python解释器,pip不行.因此conda在实际开发中是主要用来隔离不同的python版本和Tensorflow& ...

  8. 复现禅道V17.4的sql注入漏洞

    漏洞详情 简述:禅道是第一款国产的开源项目管理软件,它的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理.计划管理.发布管理.文档管理.事务管理等功 ...

  9. MinIo对象存储文件上传,下载,预览,批量上传,创建桶等

    MinIo 操作工具类 MinIo 旧中文文档 MinIo 英文文档 MinIo 官网地址 https://min.io/ package com.ming.utils; import io.mini ...

  10. wxPython==4.2.1 aui.AuiToolBar 如何去掉烦人的抓手?

    aui.AuiToolBar 如何去掉烦人的抓手? 最近在用wxPython做一些GUI小应用,发现工具栏总有几个点(抓手),很影响美观,如下: 目前官方没有提供隐藏抓手的功能,需要更改源码的auib ...