MySql使用if语句例子
工作中同事提的一个问题:
有一张用户表,表里面三个字段,分别是用户ID,用户姓名,和用户薪水,表里面有100万条数据,如何用一句SQL查询出
薪水小于1000,薪水=1000,1000<薪水<5000,薪水=5000,薪水>5000的人。写出的SQL效率越高越好。
测试:
CREATE TABLE test
(
id
int(11) NOT NULL AUTO_INCREMENT,
money
int(11) DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
插入100W条数据;进行写sql。
最开始打算使用最普通的方式写:
SELECT '<1000',count(1) from (
SELECT
id
FROMtest
wheremoney >= 0and money < 1000
) f1 UNION ALL SELECT '=1000',count(1) from (
SELECT
id
FROMtest where money=1000
) f2UNION ALL SELECT '1000<money<5000',count(1) from (
SELECT
id
FROMtest
where money>1000 and money < 5000
) f3
UNION ALL
SELECT '=5000',count(1) from (
SELECT
id
FROMtest
where money = 5000
) f4
UNION ALL
SELECT '>5000',count(1) from (
SELECT
id
FROMtest
wheremoney > 5000
) f5
刚开始想到的方式。。。用了1.103s ,肯定是效率不达标的。
后面公司开发老大发出的sql:
SELECTf,COUNT(1)
FROM(SELECTIF (money < 1000,1,IF (money = 1000,2,IF (money < 5000,3,IF (money = 5000, 4, 5)))) AS fFROMtest) t
GROUP BYf
只用了0.413s,很厉害;
可以从sql中看出使用了if的语句,很大程度提高了效率。
sql的效果是对每一条都执行判断然后附上对应条件的值。
这样写应该好看懂一点点
SELECT f,COUNT(1)
from (SELECTIF (money < 1000, 1,IF(money = 1000,2,IF(money < 5000,3,IF(money = 5000,4,5)))) fFROMtest
) r GROUP BY f
sql中的if语句是一层一层嵌套执行着的。
MySql使用if语句例子相关推荐
- Mysql数据库操作语句总结(三)
最近一段时间重新学习一下mysql命令行的用法, 这里简单记录一下 参考文章: https://www.cnblogs.com/bluealine/p/7832219.html 个人使用的是mysql ...
- mysql ddl查询语句_SQL基础-----DDL
编辑推荐: 本文来自于cnblogs,本文主要通过一些例子来介绍MySQL常用DDL语句的使用方法,希望对您能有所帮助. 1 (My)SQL入门 这里用了(My)SQL这样的标题,目的是介绍标准SQL ...
- 关于mysql中Join语句的几个问题
本文来说下关于mysql中Join语句的几个问题,JOIN语句在平时的开发中还是使用的非常多的 文章目录 概述 基本介绍 举个例子 一个注意点 Join原理 Simple Nested-Loop In ...
- php面试专题---MySQL常用SQL语句优化
php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行 ...
- mysql监控---慢语句查询
慢语句查询. 1,开启慢sql日志查询功能. 2,用show full processlist :查询执行的sql语句,然后看哪些语句有问题. 3,将有问题的语句拿出来,前面放上explai ...
- MySQL 递归 sql语句 WITH表达式实现
MySQL 递归 sql语句 WITH AS 实现 前言: 这里一般来说需要编一个故事但是我懒 mysql递归CTE: 8.0版本以上才有WITH AS,8.0以下版本的话请绕行----->不是 ...
- mysql的repeat语句_mysql实例 repeat语句的用法
本节分享一段mysql实例代码,学习mysql中repeat语句的用法. 代码如下: mysql> DELIMITER // mysql> CREATE FUNCTION myFuncti ...
- 检测mysql中sql语句的效率
1.通过查询日志 启动Mysql时加参数--log-slow-queries来记录执行时间超过long_query_time秒的sql MySQL 自带 slow log 的分析工具 mysqldum ...
- Mysql 常用统计语句
Mysql 常用统计语句 SQL分类 首先,简要介绍基础语句: 1.创建数据库 CREATE DATABASE test; 2.删除数据库 Drop database test; 3.备份sql ...
最新文章
- 关于XDC约束文件,你需要知道的几点
- String 中的秘密
- Android构建流程——篇六
- RxSwift之UI控件UISwitch与UISegmentedControl扩展的使用
- python中变量类型在程序中可以改变_详细解析Python当中的数据类型和变量
- Net框架下-ORM框架LLBLGen的简介(转载)
- 凸优化第八章几何问题 8.5 中心
- 单片机应用系统设计技术——扩展行列式键盘
- 我的Delphi开发经验谈(本人修改版) 收藏
- S32K的flash组件使用(操作FLASH)
- PHP将uncode转utf8,一行代码解决问题
- python计算各类型电影的评分,Moviedata-10M电影数据集统计分析之源码分享(Python)...
- LeetCode - Pascal's Trangle
- python解包wxapkg_小程序反编译之获取wxapkg包
- 论文笔记:SemStyle: Learning to Generate Stylised Image Captions using Unaligned Text
- java测试输入星座匹配_java十二星座 (快来测试你是什么星座吧)
- 解决 Starting MySQL ERROR The server quit without updating PID file
- 【重识云原生】第六章容器6.1.8节——Docker核心技术UnionFS
- python 评论分析_基于Python-Snownlp的新闻评论数据分析
- docker部署smokeping监控网络掉包