使用 SQL 的 GROUP BY 聚合页面 URL
您的数据库表包含 User
、Activity
和 PageURL
列。 目标是将每个唯一的 PageURL
和 User
组合的 Activity
条目合并为单个逗号分隔的字符串。
这可以使用 GROUP BY
结合字符串聚合技术来实现。 方法如下:
<code class="language-sql">SELECT User, Activity, STRING_AGG(PageURL, ',') AS CombinedPageURLs FROM TableName GROUP BY User, Activity;</code>
此查询直接使用 STRING_AGG
函数(在许多现代 SQL 方言中可用,如 PostgreSQL、SQL Server 2017 及更高版本等)来连接由 PageURL
和 User
定义的每个组内的 Activity
值。 生成的逗号分隔字符串将分配给 CombinedPageURLs
列。
不带 STRING_AGG 的 SQL 方言的替代方案:
如果您的 SQL 数据库不支持 STRING_AGG
,您可以使用类似的方法 FOR XML PATH
:
<code class="language-sql">SELECT User, Activity, STUFF(( SELECT ',' + PageURL FROM TableName t2 WHERE t2.User = t1.User AND t2.Activity = t1.Activity FOR XML PATH('') ), 1, 1, '') AS CombinedPageURLs FROM TableName t1 GROUP BY User, Activity;</code>
此替代方案使用带有 FOR XML PATH('')
的子查询来创建逗号分隔的字符串,并且 STUFF
删除前导逗号。 此方法与旧版 SQL Server 兼容。 请记住调整表和列名称以匹配您的特定数据库架构。 输出提供一个包含聚合 URL 的 CombinedPageURLs
列。
以上是如何使用 SQL 的 GROUP BY 根据用户和活动将页面 URL 组合成单个逗号分隔的字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!