加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql入门mysql中rollup和limit的用法 mysql中where子句的优化

发布时间:2020-12-12 02:26:00 所属栏目:MySql教程 来源:网络整理
导读:《Mysql入门mysql中rollup和limit的用法 mysql中where子句的优化》要点: 本文介绍了Mysql入门mysql中rollup和limit的用法 mysql中where子句的优化,希望对您有用。如果有疑问,可以联系我们。 导读:本节内容:rollup和limit的用法、where子句优化.1. 使用R

《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学院为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读