程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql利用group_concat()合並多行數據到一行,mysqlgroup_concat

mysql利用group_concat()合並多行數據到一行,mysqlgroup_concat

編輯:MySQL綜合教程

mysql利用group_concat()合並多行數據到一行,mysqlgroup_concat


假設兩個表a,b,b中通過字段id與a表關聯,a表與b表為一對多的關系。假設b表中存在一字段name,現需要查詢a表中的記錄,同時獲取存儲在b表中的name信息,按照常規查詢,b表中有多少記錄,則會顯示多少行,如果需要只顯示a表記錄行數,則需要把查詢name字段得到的多行記錄進行合並,可以通過程序實現,但也可直接在sql層完成。

方法:

利用group_concat()方法,參數為需要合並的字段,合並的字段分隔符默認為逗號,可通過參數separator指定,該方法往往配合group by 一起使用。

例子:

select a.*,group_concat(b.name separator '-') as name from a left join b on a.id=b.id group by a.id;

mysql 多行數據合並一行(根據主鍵)

在你第二個查詢的基礎上進行行轉列,如果類型是動態的建議封裝存儲過程。在外層套一個查詢,用 max(case when then ... end ) as '列名'...這種方士可以實現。
 

SQL 多行歸並為一行的問題

多行轉換為一行的處理.
不同的數據庫,處理機制不同.

對於SQL Server 2005+版本的 使用FOR XML的方式
對於MySQL使用 GROUP_CONCAT 函數 的方式進行處理
對於Oracle使用 WMSYS.WM_CONCAT 函數 的方式進行處理

其他數據庫就沒研究過了......
參考資料:hi.baidu.com/...a.html
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved