《Mysql入门mysql中rollup和limit的用法 mysql中where子句的优化》要点:
本文介绍了Mysql入门mysql中rollup和limit的用法 mysql中where子句的优化,希望对您有用。如果有疑问,可以联系我们。
导读:本节内容:rollup和limit的用法、where子句优化.1. 使用ROLLUP的分组假设某公司某个月每个营业员的销售额 sell表,其结构如下:
create ...
MYSQL数据库本节内容:
rollup和limit的用法、where子句优化.
MYSQL数据库1. 使用ROLLUP的分组
假设某公司某个月每个营业员的销售额 sell表,其结构如下:
create table sell
(
sale_id int auto_increment,
sale_name varchar(10),
sale decimal(8,2),
primary key(sale_id)
);
Insert into sell
values(100000,'张三',500);
Insert into sell
values(null,'李四',300.56);
Insert into sell
values(null,'王五',350.56);
insert into sell
values(null,'李四',200.68);
Insert into sell
values(null,'王五',700.56);
insert into sell
values(null,'张三',800.56);
MYSQL数据库表记录:
mysql> select sale_id as 销售号,sale_name as 营业员姓名,sale as 销售额 from sell;
+--------+------------------+------------+
| 销售号 | 营业员姓名 | 销售额 |
+--------+------------------+------------+
| 100000 | 张三 | 500.00 |
| 100001 | 李四 | 300.56 |
| 100002 | 王五 | 350.56 |
| 100003 | 李四 | 200.68 |
| 100004 | 王五 | 700.56 |
| 100005 | 张三 | 800.56 |
+--------+------------------+------------+
MYSQL数据库需求描述:
要查询每个营业员的总营业额,及所有营业员的总销售额?
MYSQL数据库办法1.
select sale_name as 营业员姓名,sum(sale) as 总营业额
from sell
group by sale_name
Union
select null,sum(sale)
from sell;
MYSQL数据库查询结果:
+-----------------+------------+
| 营业员姓名 | 总营业额 |
+-----------------+------------+
| 李四 | 501.24 |
| 王五 | 1051.12 |
| 张三 | 1300.56 |
| NULL | 2852.92 |
+----------------+-------------+
MYSQL数据库办法2:
使用MySQL中rollup 分组,它是通过为group by 子句添加 with rollup来简化办法1 如下:
select sale_name as 营业员姓名,sum(sale) as 总营业额
from sell
group by sale_name with rollup;
MYSQL数据库查询结果与上面的一模一样.
MYSQL数据库2. select 语句中的limit 子句
比如对上面的sell 表:查询出销售额最大的三笔?
办法1:
select sale_id as 销售号, sale as 销售额 from sell as s1
Where 3 >
(
select count(*) from sell as s2
Where s1.sale < s2.sale
)
Order by sale DESC;
MYSQL数据库查询结果:
+---------+--------+
| 销售号 | 销售额 |
+---------+--------+
| 100005 | 800.56 |
| 100004 | 700.56 |
| 100000 | 500.00 |
+--------+----------+
MYSQL数据库办法2:
此处使用MySQL中的limit 如下:
Select sale_id as 销售号, sale as 销售额 from sell
Order by sale DESC
LIMIT 3;
MYSQL数据库查询结果与办法1 一模一样.
MYSQL数据库关于limit 的一点补充:带有偏移量的limit.
MYSQL数据库比如上面的sell 表中,要从除了最大三笔销售额后,查询出最大的两笔销售额?
办法:
Select sale_id as 销售号, sale as 销售额 from sell
Order by sale DESC
LIMIT 2 OFFSET 3;
MYSQL数据库查询结果:
+---------+--------+
| 销售号 | 销售额 |
+---------+--------+
| 100002 | 350.56 |
| 100001 | 300.56 |
+---------+--------+
MYSQL数据库3,优化where 子句
此部分讨论的优化where子句适用于 select ,同样也适用于delete 、update中的where子句.
MYSQL数据库1)、去掉不必要的括号
例如,以下where子句中的条件
((a AND b) AND c OR (((a AND b) AND (c AND d))))
优化为:
(a AND b AND c) OR (a AND b AND c AND d)
MYSQL数据库2)、常量重叠
例如下面的where子句中的条件
(a<b AND b=c) AND a=5
优化为:
b>5 AND b=c AND a=5
MYSQL数据库就是这些了,本节详细介绍了mysql数据库中,rollup和limit的用法、where子句优化的相关内容,希望对大家有所赞助.
《Mysql入门mysql中rollup和limit的用法 mysql中where子句的优化》是否对您有启发,欢迎查看更多与《Mysql入门mysql中rollup和limit的用法 mysql中where子句的优化》相关教程,学精学透。维易PHP学院为您提供精彩教程。
转载请注明本页网址:
http://www.vephp.com/jiaocheng/14306.html