首頁 >資料庫 >mysql教程 >如何在 SQL 中使用 GROUP BY 連線列值?

如何在 SQL 中使用 GROUP BY 連線列值?

DDD
DDD原創
2025-01-14 09:46:43771瀏覽

How to Concatenate Column Values with GROUP BY in SQL?

使用SQL的GROUP BY語句連接列值

假設您有一個包含以下資料的表格:

<code>ID | 用户 | 活动 | 页面URL
1 | 我 | act1 | ab
2 | 我 | act1 | cd
3 | 你 | act2 | xy
4 | 你 | act2 | st</code>

您希望按使用者活動將資料分組,並將每個群組中頁面URL列的值組合成單一以逗號分隔的字串。所需輸出如下:

<code>用户 | 活动 | 页面URL
我 | act1 | ab, cd
你 | act2 | xy, st</code>

要使用GROUP BY查詢實現此連接,您可以使用STUFF()函數以及GROUP BY子句中的子查詢。以下是詳細分解:

<code class="language-sql">SELECT
    [用户], 活动,
    STUFF(
        (SELECT DISTINCT ',' + 页面URL
         FROM 表名称
         WHERE [用户] = a.[用户] AND 活动 = a.活动
         FOR XML PATH (''))
         , 1, 1, '')  AS URL列表
FROM 表名称 AS a
GROUP BY [用户], 活动</code>
  • SELECT: 選擇所需的欄位:使用者活動和連接的頁面URL值作為URL
  • STUFF(): 此函數接受三個參數:要修改的字串、起始位置、要刪除的字元數以及要插入的字串。在本例中,它刪除第一個字元(逗號)並將連接的頁面URL值插入到修改後的字串中。
  • FOR XML PATH('')中的子查詢: 此子查詢選擇由使用者活動定義的每個群組中的唯一頁URL值。它使用FOR XML PATH('')子句透過連接值傳回單一字串。
  • a.[使用者] AND 活動 = a.活動: 此部分確保子查詢僅擷取屬於目前正在處理的群組的頁面URL值。
  • GROUP BY:使用者活動將資料分組,以聚合每組的頁面URL值。

透過執行此查詢,您將獲得所需的輸出,其中每個唯一的用戶活動組合的頁面URL值都合併在一起並以逗號分隔。

以上是如何在 SQL 中使用 GROUP BY 連線列值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn