揭開GROUP_CONCAT:從聚合資料中提取單一值
在資料庫管理領域,GROUP_CONCAT 函數是聚合多個資料的強大工具值轉換為單一逗號分隔的字串。然而,在某些情況下,您可能面臨相反的挑戰:將這些聚合字串拆解為各自的元件。
問題的本質
考慮以下資料名為「colors」的表:
| id | colors | |----+----------------------| | 1 | Red,Green,Blue | | 2 | Orangered,Periwinkle |
您的目標是將這有些資料轉換為表示每個顏色的結構作為單獨的行:
| id | colors | |----+------------| | 1 | Red | | 1 | Green | | 1 | Blue | | 2 | Orangered | | 2 | Periwinkle |
解:解開字串
MySQL提供了多種技術來完成此任務。一種方法利用SUBSTRING_INDEX 和SUBSTRING 函數,如下所示:
SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', n.digit+1), ',', -1) color FROM colors INNER JOIN (SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) n ON LENGTH(REPLACE(colors, ',' , '')) <= LENGTH(colors)-n.digit ORDER BY id, n.digit
此查詢的操作方式為:
揭曉謎團:反向聚合或Un-GROUP_CONCAT
上述操作通常稱為「反向聚合」或「un-GROUP_CONCAT」。它允許您從先前聚合或連接的資料中提取和分解單個值。當您需要對單一資料點而不是聚合本身執行進一步分析或轉換時,此技術特別有用。
以上是如何反轉 GROUP_CONCAT 以從 MySQL 中的聚合字串中提取單一值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!