首頁 > 資料庫 > mysql教程 > 如何使用 SQL 的 GROUP BY 根據使用者和活動將頁面 URL 組合成單一逗號分隔的字串?

如何使用 SQL 的 GROUP BY 根據使用者和活動將頁面 URL 組合成單一逗號分隔的字串?

Mary-Kate Olsen
發布: 2025-01-14 06:01:44
原創
478 人瀏覽過

How Can I Combine Page URLs into a Single Comma-Separated String Based on User and Activity Using SQL's GROUP BY?

使用 SQL 的 GROUP BY 聚合頁面 URL

您的資料庫表包含 UserActivityPageURL 欄位。 目標是將每個唯一的 PageURLUser 組合的 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 及更高版本等)來連接由PageURLUser 定義的每個組內的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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板