mysql分組后合并顯示一個字段的多條數(shù)據(jù)方式
mysql分組合并顯示一個字段多條數(shù)據(jù)
首先我們有一張學生興趣表(student_hobby),字段包括主鍵(id)、姓名(name)、興趣(hobby)
表中數(shù)據(jù)如下
id | name | hobby |
---|---|---|
0 | 小明 | 籃球 |
1 | 小明 | 跑步 |
2 | 小華 | 讀書 |
然后我們想讓他顯示成如下效果。
name | hobbies |
---|---|
小明 | 籃球,跑步 |
小華 | 讀書 |
那么我們可以使用如下SQL。
select name,group_concat(hobby separator ',') hobbies from student_hobbt group by name;
其中分隔符逗號也可以替換為其他想要使用的字符。
mysql多字段分組
mysql多字段分組
group by 語法
分組查詢是對數(shù)據(jù)按照某個或多個字段進行分組,MYSQL中使用group by關(guān)鍵字對數(shù)據(jù)進行分組,基本語法形式為:
[GROUP BY 字段][HAVING <條件表達式>]
多字段分組
使用GROUP BY可以對多個字段進行分組,GROUP BY關(guān)鍵字后面跟需要分組的字段,MYSQL根據(jù)多字段的值來進行層次分組,分組層次從左到右,即先按照第1個字段分組,然后在第1個字段值相同的記錄中,再根據(jù)第2個字段的值進行分組,以此類推。
GROUP BY與ORDER BY一起使用(分組排序)
某些情況下需要對分組進行排序,order by用來對查詢的記錄排序,如果和GROUP BY一起使用,就可以完成對分組的排序
例如下表:
將上表中數(shù)據(jù)按照wellid和年月的格式分組統(tǒng)計:
sql語句:
select wellid,sum(number) as sum,DATE_FORMAT(time,'%Y-%m') as createTime from well GROUP BY wellid,createTime order by createTime;
統(tǒng)計結(jié)果:
使用having過濾分組
GROUP BY可以和HAVING一起限定顯示記錄所需要滿足的條件,只有滿足條件的分組才會被顯示
還是上面張表,我們這次限定只要2020年12月之后的數(shù)據(jù):
select wellid,sum(number) as sum,DATE_FORMAT(time,'%Y-%m') as createTime from well GROUP BY wellid,createTime having createTime>'2020-12' order by createTime;
查詢結(jié)果:
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
分享mysql的current_timestamp小坑及解決
這篇文章主要介紹了mysql的current_timestamp小坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11MySQL InnoDB和MyISAM數(shù)據(jù)引擎的差別分析
InnoDB和MyISAM是在使用MySQL最常用的兩個表類型,各有優(yōu)缺點,視具體應(yīng)用而定?;镜牟顒e為:MyISAM類型不支持事務(wù)處理等高級處理,而InnoDB類型支持2011-05-05MySQL實現(xiàn)批量插入測試數(shù)據(jù)的方式總結(jié)
在開發(fā)過程中經(jīng)常需要一些測試數(shù)據(jù),?這個時候如果手敲的話,?十行二十行還好,?多了就很死亡了,?接下來介紹兩種常用的MySQL測試數(shù)據(jù)批量生成方式,希望對大家有所幫助2023-05-05