使用 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>
詳細內容如下:
string_agg(actor::text, ', ')
:此部分使用逗號和空格作為分隔符號連接 actor
列值。 ::text
明確地將 actor
列轉換為文本,如果它還不是文字資料類型,則這是必需的。 GROUP BY movie
:這按 movie
列對行進行分組,確保同一部電影的演員聚合在一起。 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中文網其他相關文章!