>>>分組:
set global sql_mode="strict_trans_tables,only_full_group_by"; 更改數據庫模式,在分組后,只能顯示被分組字段和使用聚合函數選取出來的字段.
group by + group_concat
分組:類似於將一個班級的學生,按照性別或其他條件,分成若干個組,最終以小組為單位顯示,如上圖中,以post字段對表進行分組,若想在分組后,操作每個組內的數據,有兩種方式,一種是通過聚合函數(max,min,avg,sum),一種是group_concat.
聚合函數(max,min,avg,sum)
max:取每個組內某個字段值的最大值
min:取每個組內某個字段值的最小值
avg:求第個組的內某個字段值的平均值
sum:求每個組內某個字段值的和
group_concat:可以提取分組中的字段,並可以將值與值進行拼接顯示.
having:必須在group by 之后,作用是,對分組后的數據,進行再次篩選
如上圖:求每個部門中薪資最高的人,且只保留薪資大於10000的人
>>>連表查詢
inner join:內連接:只取兩張表有對應關系的記錄
left join:左連接: 在內連接的基礎上保留左表沒有對應關系的記錄
right join:右連接: 在內連接的基礎上保留右表沒有對應關系的記錄
union:全連接:在內連接的基礎上保留左、右面表沒有對應關系的的記錄
>>>子查詢
將表1的查詢結果,做為表2的查詢條件,即為子查詢.
如圖:查詢員工jason所在的部門.