SQL中group_concat用法


基本用法:group_concat([DISTINCT] 要連接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

常常用於關聯查詢,並且表數據對應關系為一對多,將結果返回一條數據

業務場景中將項目階段與結束時間對應查詢出來(項目階段有多個,一階段對應一階段的結束時間,依次)

1 //mapper里的sql寫法
2 SELECT 
3     p.*,
4     (SELECT group_concat(d.planStage,':',d.endDateTrue SEPARATOR ';') FROM pm_plan_detail d WHERE p.id = d.strProId) as 'dId'
5     FROM pm_project p
6     left join pm_plan_detail c on p.id = c.strProId 
7     ORDER BY p.CREATEDATETIME DESC

將項目階段與結束時間拼接成一個字段dId,內容為"4:2019-11-20;2:2019-09-24;7:2020-01-09;6:2019-12-30;3:2019-10-23",在業務代碼中將dId轉成map

 

注意!當下述sql中的d.endDateTrue或者d.enDate其中一個為null時,則返回的dId為null,為了避免這種情況,可以使用IFNULL來判斷:

1 SELECT 
2 p.id,
3 p.strProjectName,
4     (SELECT group_concat(d.planStage ,':',IFNULL(d.endDate,' '),',',IFNULL(d.endDateTrue,' ') SEPARATOR ';') FROM pm_plan_detail d WHERE p.id = d.strProId) as 'dId'
5     FROM pm_project p

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM