在 SQL 表中組合每部電影的演員名稱
想像一個包含「電影」和「演員」欄位的表格。 任務是檢索電影及其對應演員的列表,並將每部電影的所有演員組合成一個字串。
使用string_agg()
的解:
最有效的方法是使用 string_agg()
函數(在 PostgreSQL 9.0 及更高版本中可用):
<code class="language-sql">SELECT movie, string_agg(actor, ', ') AS actor_list FROM table_name GROUP BY movie;</code>
string_agg()
連結每部電影的演員姓名,並以逗號分隔。 GROUP BY movie
確保每部電影一行。
舊版 PostgreSQL 版本(9.0 之前)的替代方案:
對於較舊的 PostgreSQL 版本,請使用 array_agg()
和 array_to_string()
:
<code class="language-sql">SELECT movie, array_to_string(array_agg(actor ORDER BY actor), ', ') AS actor_list FROM table_name GROUP BY movie;</code>
這會將 actor 聚合到一個陣列中,然後將其轉換為逗號分隔的字串。 ORDER BY actor
子句按每部電影清單中的字母順序對演員進行排序。
自訂演員列表順序:
要控制每個清單中演員的順序(例如,按計費順序),請在 ORDER BY
或 string_agg()
內加上 array_agg()
:
<code class="language-sql">SELECT movie, string_agg(actor, ', ' ORDER BY actor) AS actor_list --Alphabetical order FROM table_name GROUP BY movie;</code>
這種方法簡化了電影與演員關係的呈現,有利於數據分析與展示。
以上是如何在 SQL 表中連接每部電影的演員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!