PostgreSQL 中針對多個記錄和單一 ID 連線欄位值
許多資料庫應用程式需要將與單一識別碼相關的多個值組合成單一連接字串。當查詢每個唯一 ID 具有多個記錄的表時,此操作特別有用。
MySQL 中的 GROUP_CONCAT 函數
在 MySQL 中,GROUP_CONCAT 函數提供了一種直接實現此目標的方法。但是,GROUP_CONCAT 函數在 PostgreSQL 中不可直接使用。
PostgreSQL 中 GROUP_CONCAT 的等效項
在 PostgreSQL 中,string_agg 函數是 MySQL 的 GROUP_CONCAT 的等效項。此函數可讓您連接字串,同時指定分隔符號(例如逗號)來分隔連接的值。
範例:使用 string_agg 的 PostgreSQL 查詢
考慮原始問題中提供的範例表:
id | some_column |
---|---|
TM67 | 4 |
TM67 | 9 |
TM67 | 72 |
TM99 | 2 |
TM99 | 3 |
可以使用以下 PostgreSQL 查詢來連接每個唯一 id 的 some_column 欄位的值:
<code class="language-sql">SELECT id, string_agg(some_column::text, ',') AS values FROM the_table GROUP BY id;</code>
結果:
id | values |
---|---|
TM67 | 4,9,72 |
TM99 | 2,3 |
此查詢為每個唯一 id 檢索一行,並將 some_column 列的值連接到一個帶有逗號作為分隔符號的單一字串中。
注意: string_agg 函數在 PostgreSQL 9.0 版本中引入。對於早期版本的 PostgreSQL,可以使用 generate_series 或 group_concat_agg 擴充功能作為替代方案來實現相同的功能。 some_column::text
的類型轉換確保了即使 some_column
不是文字類型,也能正確連接。
以上是如何使用單一 ID 連接 PostgreSQL 中多個記錄的欄位值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!