mysql的 case用法_mysql数据库case语句的使用方法
用case语句就可以很好的解决这个问题:
代码如下 | 复制代码 |
select a.master_id,sum(case when b.status=6 then 1 else 0 end) as total_count from a inner join b on a.order_id=b.id group by a.master_id. |
用case语句执行时,当满足status=6时就返回1否则返回0,用sum计算出符合条件的数量。
好了现在再整理一些简单的例子供各位参考。
代码如下 | 复制代码 |
表的创建 CREATE TABLE `lee` ( `id` int(10) NOT NULL AUTO_INCREMENT, `name` char(20) DEFAULT NULL, `birthday` datetime DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 数据插入: insert into lee(name,birthday) values ('sam','1990-01-01'); insert into lee(name,birthday) values ('lee','1980-01-01'); insert into lee(name,birthday) values ('john','1985-01-01'); 第一种用法: SELECT name, CASE WHEN birthday < '1981' THEN 'old' WHEN birthday > '1988' THEN 'yong' ELSE 'ok' END YORN FROM lee 第二种用法: SELECT NAME, CASE name WHEN 'sam' THEN 'yong' WHEN 'lee' THEN 'handsome' ELSE 'good' END as oldname FROM lee 第三种:当然了,case when 语句还可以复合 select name, birthday, case when birthday > '1983' then 'yong' when name='lee' then 'handsome' else 'just so so' end from lee; 在这里用sql语句进行日期比较的话,需要对年加引号,要不然可能结果和预期的结果不同, 当然也可以用year函数来实现 select name, case when year(birthday) > 1988 then 'yong' when year(birthday) < 1980 then 'old' else 'ok' END from lee; ========================================================== create table penalties ( paymentno INTEGER not NULL, payment_date DATE not null, amount DECIMAL(7,2) not null, primary key(paymentno) ) insert into penalties values(1,'2008-01-01',3.45); insert into penalties values(2,'2009-01-01',50.45); insert into penalties values(3,'2008-07-01',80.45); 第一题:对罚款登记分为三类,第一类low,包括大于0小于等于40的罚款,第二类moderate大于40到80之间的罚款,第三类high包含所有大于80的罚款 select payment_date, amount, case when amount >= 0 AND amount < 40 then 'low' when amount >=40 AND amount < 80 then 'moderate' when amount >=80 then 'high' else 'null' END FROM penalties 第二题:统计出属于low的罚款编号 select * from ( select paymentno, amount, case when amount >= 0 AND amount < 40 then 'low' when amount >=40 AND amount < 80 then 'moderate' when amount >=80 then 'high' else 'incorrect' end lvl from penalties) as p where p.lvl = 'low' |
mysql的 case用法_mysql数据库case语句的使用方法相关推荐
- MySQL延时更改数据_mysql数据库备份设置延时备份方法(mysql主从配置)
一 为什么需要延时备份 percona-xtrabackup是一个优秀的用于增量备份的工具.今天我们讲到的延时备份也是使用他们的产品. 以前在MySQL AB复制一文中提到了AB复制.我们首先回顾下M ...
- mysql数据库select语句用法_mysql数据库select查询语句简单用法
mysql select简单用法 1.select语句可以用回车分隔$sql="select * from article where id=1"和$sql="selec ...
- mysql数据库查询语句_mysql数据库查询语句
一 数据库的语句 1 关于数据库 创建数据库 create database 数据库名字(自己命名) 查看mysql下的所有数据库 show d ...
- mysql设备台账_mysql数据库操作语句大全.pdf
mysql数据库操作语句大全.pdf mysql数据库操作语句大全(常用操作指令)一 . 常用mysql命令行命令1.启动MYSQL服务 netstartmysql停止MYSQL服务 stat na| ...
- mysql异地备份原理_Mysql数据库异地备份
Mysql数据库异地备份 一. 简介 1.1 增量备份简介 增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味着,第一次增量备份的对象是进行全 ...
- mysql回滚用法_Mysql误操作后利用binlog2sql快速回滚的方法详解
前言 在日常工作或者学习中,操作数据库时候难免会因为"大意"而误操作,需要快速恢复的话通过备份来恢复是不太可能的,下面这篇文章主要给大家介绍关于Mysql误操作后利用binlog2 ...
- mysql 导出dmp文件_MySQL数据库基础讲解
# 简介 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言(SQL)进行数据库管理. MySQL是开放源代码的,因此任何人都可以在General Publi ...
- mysql leave的作用_MySQL数据库中DELIMITER的作用
以下的文章主要是向大家描述的是MySQL数据库中delimiter的作用是什么?我们一般都认为这个命令和存储过程关系不大,到底是不是这样的呢?以下的文章将会给你相关的知识,望你会有所收获. 下面是一个 ...
- mysql delimiter的作用_MySQL数据库中delimiter的作用概述
以下的文章主要是向大家描述的是MySQL数据库中delimiter的作用是什么?我们一般都认为这个命令和存储过程关系不大,到底是不是这样的呢?以下的文章将会给你相关的知识,望你会有所收获. 其实就是告 ...
最新文章
- 数据库启动时报ORA-00845错误解决方法
- linux下 DNS配置过程『罗斌原创』
- 《2018面向对象程序设计(java)课程学习进度条》
- flutter自定义弹窗
- pymysql操作mysql数据库
- python中八皇后如何运算的_python解决八皇后算法
- (九)演员-评论员算法
- Codeforces Educational Codeforces Round 3 D. Gadgets for dollars and pounds 二分,贪心
- mysql 数据库连接不够_一个Web报表项目的性能分析和优化实践(二):MySQL数据库连接不够用(TooManyConnections)问题的一次分析和解决案例...
- python3 获取文件目录_python3--os.path获取当前文件的绝对路径和所在目录
- 百度文库解决复制问题
- 2022年MySQL8 OCP最新题库整理,传授有缘人
- 安卓模拟器安装教程_雷电模拟器4.0去广告清爽版,详细安装教程,超简单!
- android最新版安装教程,在PC上安装Android系统的图文教程
- suse linux 添加网卡驱动,图文并茂介绍suse linux 11系统安装全过程以及suse系统下安装网卡驱动和刷新固件.doc...
- 基于SSM的博客系统-原创教程
- ubuntu 17 linux 网络,无路由器的情况下linux(ubuntu 17.04)如何连接联通的校园宽带?...
- DIY手机万能红外遥控器
- Java学生签到考勤请假系统源码
- dev.env.js和prod.env.js