《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.snjht.com/jiaocheng/14306.html