MySql使用if语句例子
来源:互联网 发布:现在开淘宝卖什么好卖 编辑:程序博客网 时间:2024/05/19 02:28
工作中同事提的一个问题:
有一张用户表,表里面三个字段,分别是用户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 (SELECTidFROM testwhere money >= 0 and money < 1000) f1 UNION ALL SELECT '=1000',count(1) from (SELECTidFROM test where money=1000) f2UNION ALL SELECT '1000<money<5000',count(1) from (SELECTidFROM testwhere money>1000 and money < 5000) f3UNION ALL SELECT '=5000',count(1) from (SELECTidFROM testwhere money = 5000) f4UNION ALL SELECT '>5000',count(1) from (SELECTidFROM testwhere money > 5000) f5
刚开始想到的方式。。。用了1.103s ,肯定是效率不达标的。
后面公司开发老大发出的sql:
SELECT f, COUNT(1)FROM ( SELECT IF ( money < 1000, 1, IF ( money = 1000, 2, IF ( money < 5000, 3, IF (money = 5000, 4, 5) ) ) ) AS f FROM test ) tGROUP BY f
只用了0.413s,很厉害;
可以从sql中看出使用了if的语句,很大程度提高了效率。
sql的效果是对每一条都执行判断然后附上对应条件的值。
这样写应该好看懂一点点
SELECT f, COUNT(1) from ( SELECT IF (money < 1000, 1, IF(money = 1000,2, IF(money < 5000,3, IF(money = 5000,4,5) ) ) ) f FROM test) r GROUP BY f
sql中的if语句是一层一层嵌套执行着的。
阅读全文
0 0
- MySql使用if语句例子
- if语句的使用例子
- mysql语句中用if的例子
- mysql语句中用if的例子
- mysql语句中用if的例子
- mysql语句中用if的例子
- mysql语句中用if的例子_数据库技巧
- MySQL语句中要用到if的例子列举
- MySQL的if,case语句使用总结
- MySQL的if,case语句使用总结
- MySQL的if,case语句使用总结
- MySQL的if,case语句使用总结
- MySQL的if,case语句使用总结
- Mysql数据库if语句case when使用
- MySQL的if,case语句使用总结
- mysql中 if语句的使用
- MySQL if case语句使用总结
- MySQL的if,case语句使用总结
- pycharm配置集
- 哈希表的扩展-布隆过滤器
- C++中map的简单使用
- centos部署lvs+keepalived+apache/tomcat实现高性能高可用负载均衡
- iOS判断输入的字符是否都是中文
- MySql使用if语句例子
- LeetCode 551. Student Attendance Record I
- UML用例图
- Android 类似Ios的相册
- 省市县三级级联
- 蓝桥杯 第六届决赛 生成回文数 JAVA
- Java中有两种实现多线程的方式以及两种方式之间的区别
- CardView兼容问题
- tomcat启动报错org.apache.catalina.core.StandardContext listenerStart