詳解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碼停止盤算的。