MySql使用if语句例子
2017-05-16 10:55
337 查看
工作中同事提的一个问题:
有一张用户表,表里面三个字段,分别是用户ID,用户姓名,和用户薪水,表里面有100万条数据,如何用一句SQL查询出
薪水小于1000,薪水=1000,1000<薪水<5000,薪水=5000,薪水>5000的人。写出的SQL效率越高越好。
测试:
CREATE TABLE
PRIMARY KEY (
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
插入100W条数据;进行写sql。
最开始打算使用最普通的方式写:
刚开始想到的方式。。。用了1.103s ,肯定是效率不达标的。
后面公司开发老大发出的sql:
只用了0.413s,很厉害;
可以从sql中看出使用了if的语句,很大程度提高了效率。
sql的效果是对每一条都执行判断然后附上对应条件的值。
这样写应该好看懂一点点
sql中的if语句是一层一层嵌套执行着的。
有一张用户表,表里面三个字段,分别是用户ID,用户姓名,和用户薪水,表里面有100万条数据,如何用一句SQL查询出
薪水小于1000,薪水=1000,1000<薪水<5000,薪水=5000,薪水>5000的人。写出的SQL效率越高越好。
测试:
CREATE TABLE
test(
idint(11) NOT NULL AUTO_INCREMENT,
moneyint(11) DEFAULT NULL,
PRIMARY KEY (
id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
插入100W条数据;进行写sql。
最开始打算使用最普通的方式写:
SELECT '<1000',count(1) from ( SELECT id FROM test where money >= 0 and money < 1000 ) f1 UNION ALL SELECT '=1000',count(1) from ( SELECT id FROM test where money=1000 ) f2 UNION ALL SELECT '1000<money<5000',count(1) from ( SELECT id FROM test where money>1000 and money < 5000 ) f3 UNION ALL SELECT '=5000',count(1) from ( SELECT id FROM test where money = 5000 ) f4 UNION ALL SELECT '>5000',count(1) from ( SELECT id FROM test where 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 ) t GROUP 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语句是一层一层嵌套执行着的。
相关文章推荐
- MySQL取第一条数据方法:SQL语句分组的方法,使用Northwind 数据库为例子。
- MySql中使用INSERT INTO语句更新多条数据的例子
- mysql中 if语句的使用
- MySQL中的if和case语句使用总结
- mySQL语法中的存储过程及if语句的使用简例
- (译)MySQL:在 WHERE 条件语句中使用 IF 语句
- MySQL的if,case语句使用总结
- mysql中case语句和if语句的使用
- MySQL的if,case语句使用总结
- mysql 原生语句 if 的一种使用情形及方法
- MySQL的if,case语句使用总结
- MySQL的if,case语句使用总结
- MySQL的if,case语句使用总结
- MySQL的if,case语句使用总结
- mysql语句中用if的例子
- MySql中使用INSERT INTO语句更新多条数据的例子
- MySQL中的if和case语句使用总结
- MySQL中的if和case语句使用总结
- MySQL if case语句使用总结
- if语句的使用例子