用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语句的使用方法相关推荐

  1. MySQL延时更改数据_mysql数据库备份设置延时备份方法(mysql主从配置)

    一 为什么需要延时备份 percona-xtrabackup是一个优秀的用于增量备份的工具.今天我们讲到的延时备份也是使用他们的产品. 以前在MySQL AB复制一文中提到了AB复制.我们首先回顾下M ...

  2. mysql数据库select语句用法_mysql数据库select查询语句简单用法

    mysql select简单用法 1.select语句可以用回车分隔$sql="select * from article where id=1"和$sql="selec ...

  3. mysql数据库查询语句_mysql数据库查询语句

    一   数据库的语句 1     关于数据库 创建数据库         create database 数据库名字(自己命名) 查看mysql下的所有数据库               show d ...

  4. mysql设备台账_mysql数据库操作语句大全.pdf

    mysql数据库操作语句大全.pdf mysql数据库操作语句大全(常用操作指令)一 . 常用mysql命令行命令1.启动MYSQL服务 netstartmysql停止MYSQL服务 stat na| ...

  5. mysql异地备份原理_Mysql数据库异地备份

    Mysql数据库异地备份 一. 简介 1.1 增量备份简介 增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味着,第一次增量备份的对象是进行全 ...

  6. mysql回滚用法_Mysql误操作后利用binlog2sql快速回滚的方法详解

    前言 在日常工作或者学习中,操作数据库时候难免会因为"大意"而误操作,需要快速恢复的话通过备份来恢复是不太可能的,下面这篇文章主要给大家介绍关于Mysql误操作后利用binlog2 ...

  7. mysql 导出dmp文件_MySQL数据库基础讲解

    # 简介 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言(SQL)进行数据库管理. MySQL是开放源代码的,因此任何人都可以在General Publi ...

  8. mysql leave的作用_MySQL数据库中DELIMITER的作用

    以下的文章主要是向大家描述的是MySQL数据库中delimiter的作用是什么?我们一般都认为这个命令和存储过程关系不大,到底是不是这样的呢?以下的文章将会给你相关的知识,望你会有所收获. 下面是一个 ...

  9. mysql delimiter的作用_MySQL数据库中delimiter的作用概述

    以下的文章主要是向大家描述的是MySQL数据库中delimiter的作用是什么?我们一般都认为这个命令和存储过程关系不大,到底是不是这样的呢?以下的文章将会给你相关的知识,望你会有所收获. 其实就是告 ...

最新文章

  1. 数据库启动时报ORA-00845错误解决方法
  2. linux下 DNS配置过程『罗斌原创』
  3. 《2018面向对象程序设计(java)课程学习进度条》
  4. flutter自定义弹窗
  5. pymysql操作mysql数据库
  6. python中八皇后如何运算的_python解决八皇后算法
  7. (九)演员-评论员算法
  8. Codeforces Educational Codeforces Round 3 D. Gadgets for dollars and pounds 二分,贪心
  9. mysql 数据库连接不够_一个Web报表项目的性能分析和优化实践(二):MySQL数据库连接不够用(TooManyConnections)问题的一次分析和解决案例...
  10. python3 获取文件目录_python3--os.path获取当前文件的绝对路径和所在目录
  11. 百度文库解决复制问题
  12. 2022年MySQL8 OCP最新题库整理,传授有缘人
  13. 安卓模拟器安装教程_雷电模拟器4.0去广告清爽版,详细安装教程,超简单!
  14. android最新版安装教程,在PC上安装Android系统的图文教程
  15. suse linux 添加网卡驱动,图文并茂介绍suse linux 11系统安装全过程以及suse系统下安装网卡驱动和刷新固件.doc...
  16. 基于SSM的博客系统-原创教程
  17. ubuntu 17 linux 网络,无路由器的情况下linux(ubuntu 17.04)如何连接联通的校园宽带?...
  18. DIY手机万能红外遥控器
  19. Java学生签到考勤请假系统源码
  20. dev.env.js和prod.env.js

热门文章

  1. 「开源」目前见过的最好的开源OA产品
  2. php防火墙源码,科威PHP防火墙 v1.1 BETA UTF8
  3. 哲理故事与管理之道(12)-让员工随时看到工作成果
  4. Woocommerce电子商务主题模板应该怎么选?
  5. markdown工具对比: 作业部落 vs Typora
  6. 亚马逊备案或授权出现品牌滥用怎么办?现在的通过率很高么?
  7. Photoscan 照片对齐后生成DEM的选项不能选
  8. 班组沟通与管理培训PPT模板
  9. 贝叶斯算法(bayesian)介绍
  10. 图片怎么批量转二维码?多张图片如何实现一图一码?