程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 詳解MySQL中的分組查詢與銜接查詢語句

詳解MySQL中的分組查詢與銜接查詢語句

編輯:MySQL綜合教程

詳解MySQL中的分組查詢與銜接查詢語句。本站提示廣大學習愛好者:(詳解MySQL中的分組查詢與銜接查詢語句)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解MySQL中的分組查詢與銜接查詢語句正文


分組查詢 group by
group by 屬性名 [having 前提表達式][ with rollup]
“屬性名 ”指依照該字段值停止分組;“having 前提表達式 ”用來限制分組後的顯示,知足前提的成果將被顯示;with rollup 將會在一切記載的最初加上一筆記錄,該記載是下面一切記載的總和。

1)零丁應用
group by 零丁應用,查詢成果只顯示一個分組的一筆記錄。
實例:

select * from employee group by sex;

將只顯示男女兩筆記錄。

2)與group_concat()函數一路應用
每一個分組中指定字段值都顯示出來
實例:

select sex,group_concat(name) from employee group by sex;

顯示成果中“女”會顯示一切sex為“女”的名字name

sex | group_concat(name)
女 | 小紅,小蘭
男 | 張三,王五,王六

3)與聚集函數一路應用
實例:

select sex,count(sex) from employee group by sex;

成果:

sex | count(num)
女 | 1
男 | 3

count()為盤算個數的辦法。

4)與having一路應用
“having前提表達式”,可以限制輸入成果。只要知足前提表達式的成果才顯示。
實例:

select sex,count(sex) from employee group by sex having count(sex) >= 3;

成果:

sex | count(sex)
男 | 3

“having前提表達式”感化於分組後的記載。

5)按多字段停止分組

select * from employee group by d_id,sex;

查詢成果先按d_id分組,再按sex停止分組

6) 與with rollup一路應用
應用with rollup將會在一切記載的最初加上一筆記錄,這筆記錄是下面一切記載的總和
實例:

select sex,count(sex) from employee group by sex with rollup;

成果:

sex | count(sex)
女 | 1
男 | 5
null | 6

假如是字符串的話,好比姓名就會生成“張三,李四,王五”這類類型的成果,即name總和。

銜接查詢
將兩個及兩個以上的表銜接起來拔取所需數據。

1)內銜接查詢:
當兩個表中具有雷同意義的字段值相等時,就查詢出該筆記錄。
實例:

select num,name,employee.d_id,age,d_name from employee,department where employee.d_id = department.d_id

因字段名雷同,所以取d_id字段值時最好指定哪張表的字段。

2)外銜接查詢
select 屬性名列表 from 表名1 left|right join 表名2 on 表名1.屬性名1=表名2.屬性名2;
左銜接查詢:
停止左銜接查詢時,可以查出表名1中所指的表中一切記載。而表名2所指表中,只能查詢出婚配的記載。
實例:


select num,name,employee.d_id,age,d_name from employee left join department on employee.d_id = department.d_id;

右銜接查詢:
與左銜接相反,可以查詢出表名2中的的一切記載,而表名1中所指的表中,只查詢出婚配的記載。


PS:應用聚集函數查詢
聚集函數包含count(),sum(),avg(),max()和min()。
1)count()函數
統計記載條數
實例:

select count(*) from employee;

與group by一路應用

select d_id,count(*) from employee group by d_id;

上述語句會先分組後統計。

2) sum()函數
sum()函數是乞降函數
實例:

select num,sum(score) from grade where num= 1001;

select num,sum(score) from grade group by num;

sum()只能盤算數值類型字段。
3)avg()函數
avg()函數是求均勻值函數。
實例:

select avg(age) from employee;

select course,avg(score) from group by course;

4)max(),min()函數
求最年夜值和最小值。
實例:
select max(age) from employee;
select num,course,max(score) from grade group by course;
關於字符串的最年夜值成績,max()函數是應用字符對應的ascii碼停止盤算的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved