分組查詢 group by
group by 屬性名 [having 條件表達(dá)式][ with rollup]
“屬性名 ”指按照該字段值進(jìn)行分組;“having 條件表達(dá)式 ”用來限制分組后的顯示,滿足條件的結(jié)果將被顯示;with rollup 將會在所有記錄的最后加上一條記錄,該記錄是上面所有記錄的總和。
1)單獨使用
group by 單獨使用,查詢結(jié)果只顯示一個分組的一條記錄。
實例:
| select * from employee group by sex; |
將只顯示男女兩條記錄。
2)與group_concat()函數(shù)一起使用
每個分組中指定字段值都顯示出來
實例:
| select sex,group_concat(name) from employee group by sex; |
顯示結(jié)果中“女”會顯示所有sex為“女”的名字name
| sex | group_concat(name)女 | 小紅,小蘭男 | 張三,王五,王六 |
3)與集合函數(shù)一起使用
實例:
| select sex,count(sex) from employee group by sex; |
結(jié)果:
| sex | count(num)女 | 1男 | 3 |
count()為計算個數(shù)的方法。
4)與having一起使用
“having條件表達(dá)式”,可以限制輸出結(jié)果。只有滿足條件表達(dá)式的結(jié)果才顯示。
實例:
| select sex,count(sex) from employee group by sex having count(sex) >= 3; |
結(jié)果:
| sex | count(sex)男 | 3 |
“having條件表達(dá)式”作用于分組后的記錄。
5)按多字段進(jìn)行分組
| select * from employee group by d_id,sex; |
查詢結(jié)果先按d_id分組,再按sex進(jìn)行分組
6) 與with rollup一起使用
使用with rollup將會在所有記錄的最后加上一條記錄,這條記錄是上面所有記錄的總和
實例:
| select sex,count(sex) from employee group by sex with rollup; |
結(jié)果:
| sex | count(sex)女 | 1男 | 5null | 6 |
如果是字符串的話,比如姓名就會生成“張三,李四,王五”這種類型的結(jié)果,即name總和。
連接查詢
將兩個及兩個以上的表連接起來選取所需數(shù)據(jù)。
1)內(nèi)連接查詢:
當(dāng)兩個表中具有相同意義的字段值相等時,就查詢出該條記錄。
實例:
2)外連接查詢
select 屬性名列表 from 表名1 left|right join 表名2 on 表名1.屬性名1=表名2.屬性名2;
新聞熱點
疑難解答
圖片精選