首頁 > 資料庫 > mysql教程 > 如何使用 SQL 將多行連接成一行?

如何使用 SQL 將多行連接成一行?

DDD
發布: 2025-01-15 08:48:43
原創
172 人瀏覽過

How Can I Concatenate Multiple Rows into a Single Row Using SQL?

使用 SQL 將多行合併為一行

許多資料庫任務需要將一列中具有相同值的多行合併為一行,並連接另一列中的值。 想像一個電影資料庫,其中每部電影的演員在單獨的行中列出:

<code>Movie | Actor
----------------
A      1
A      2
A      3
B      4</code>
登入後複製

目標是建立以下結果集:

<code>Movie | ActorList
----------------
A      1, 2, 3
B      4</code>
登入後複製

使用字串聚合合併

SQL 的 string_agg 函式提供了一個高效率的解決方案。此聚合函數連接指定列中的值。這是查詢:

<code class="language-sql">SELECT movie, string_agg(actor::text, ', ') AS actor_list
FROM tbl
GROUP BY movie;</code>
登入後複製

詳細內容如下:

  1. string_agg(actor::text, ', '):此部分使用逗號和空格作為分隔符號連接 actor 列值。 ::text 明確地將 actor 列轉換為文本,如果它還不是文字資料類型,則這是必需的。
  2. GROUP BY movie:這按 movie 列對行進行分組,確保同一部電影的演員聚合在一起。
  3. actor_list:這是產生的連接字串的別名。

增強功能與注意事項:

  • 資料類型:確保要聚合的欄位是文字類型。 如果沒有,請使用明確強制轉換(如上面所示的 ::text)。
  • 排序: 要對每個清單中的演員進行排序,請在 ORDER BY 內加上 string_agg
<code class="language-sql">SELECT movie, string_agg(actor::text, ', ' ORDER BY actor) AS actor_list
FROM tbl
GROUP BY movie;</code>
登入後複製

這種查詢內排序通常比對最終結果集進行排序更有效。

這種方法有效地將多行合併為一個更易於管理的行,使數據分析和報告更加簡單。

以上是如何使用 SQL 將多行連接成一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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