如何在MySQL 中的CONCAT 中使用GROUP_CONCAT
在某些場景下,您可能會遇到需要轉換儲存在MySQL 表中的數據的情況成特定格式。例如,假設您有一個包含以下資料的表格:
id | Name | Value |
---|---|---|
1 | A | 4 |
1 | A | 5 |
1 | B | 8 |
2 | C | 9 |
您的目標是獲得以下結果:
id | Column |
---|---|
1 | A:4,5,B:8 |
2 | C:9 |
要實現此轉換,您需要利用GROUP_CONCAT() 函數。此函數的突出之處在於它能夠連接按特定條件分組的多行值。
首先,您需要產生一個子查詢來連接按 id 和 Name 分組的值。以下程式碼片段示範了此步驟:
select id, concat(`Name`, ':', group_concat(`Value` separator ',')) as Name from mytbl group by id, Name
產生的子查詢將建立一個名為 Name 的新列,其中包含由冒號和逗號連接的所有值,並按 id 和 Name 分組。
| id | Name | | --- | ---- | | 1 | A:4,5 | | 1 | B:8 | | 2 | C:9 |
最後,再次將 GROUP_CONCAT() 套用於最外層查詢,這次使用 id 作為分組標準。此步驟將連接子查詢中的名稱值,並以逗號分隔:
select id, group_concat(`Name` separator ',') as `ColumnName` from ( select id, concat(`Name`, ':', group_concat(`Value` separator ',')) as Name from mytbl group by id, Name ) tbl group by id;
結果將完全符合預期:
| id | Column | | --- | ----- | | 1 | A:4,5,B:8 |
以上是MySQL中如何結合GROUP_CONCAT和CONCAT進行複雜資料聚合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!