mysql分組后合并顯示一個字段的多條數據方式
mysql分組合并顯示一個字段多條數據
首先我們有一張學生興趣表(student_hobby),字段包括主鍵(id)、姓名(name)、興趣(hobby)
表中數據如下
| 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 語法
分組查詢是對數據按照某個或多個字段進行分組,MYSQL中使用group by關鍵字對數據進行分組,基本語法形式為:
[GROUP BY 字段][HAVING <條件表達式>]
多字段分組
使用GROUP BY可以對多個字段進行分組,GROUP BY關鍵字后面跟需要分組的字段,MYSQL根據多字段的值來進行層次分組,分組層次從左到右,即先按照第1個字段分組,然后在第1個字段值相同的記錄中,再根據第2個字段的值進行分組,以此類推。
GROUP BY與ORDER BY一起使用(分組排序)
某些情況下需要對分組進行排序,order by用來對查詢的記錄排序,如果和GROUP BY一起使用,就可以完成對分組的排序
例如下表:

將上表中數據按照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)計結果:

使用having過濾分組
GROUP BY可以和HAVING一起限定顯示記錄所需要滿足的條件,只有滿足條件的分組才會被顯示
還是上面張表,我們這次限定只要2020年12月之后的數據:
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;
查詢結果:

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MySQL計劃任務(事件調度器) Event Scheduler介紹
MySQL5.1.x版本中引入了一項新特性EVENT,顧名思義就是事件、定時任務機制,在指定的時間單元內執(zhí)行特定的任務,因此今后一些對數據定時性操作不再依賴外部程序,而直接使用數據庫本身提供的功能2013-10-10
Centos7中MySQL數據庫使用mysqldump進行每日自動備份的編寫
數據庫的備份,對于生產環(huán)境來說尤為重要,數據庫的備份分為物理備份和邏輯備份。我們將使用mysqldump命令進行數據備份。使用自動任務進行每日備份,下邊我們將使用mysqldump命令進行數據備份,感興趣的朋友一起看看吧2021-07-07
windows環(huán)境中mysql忘記root密碼的解決方法詳解
本篇文章是對windows環(huán)境中mysql忘記root密碼的解決方法進行了詳細的分析介紹,需要的朋友參考下2013-06-06
mysql5.7.19 解壓版安裝教程詳解(附送純凈破解中文版SQLYog)
Mysql5.7.19版本是今年新推出的版本,最近幾個版本的MySQL都不再是安裝版,都是解壓版了,大家在使用過程中遇到很多問題,下面小編給大家?guī)砹薓ySQL5.7.19 解壓版安裝教程詳解,感興趣的朋友一起看看吧2017-10-10

