揭开 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中文网其他相关文章!