postgresql中的concatinating行

时间:2016-03-28 20:32:58

标签: postgresql concatenation

我在postgres中有多对多的关系,即书籍和作者。作者可以有很多书,书籍可以有很多作者。 我还有一个只包含author_id和book_id的连接表。 为简单起见,假设我的authors表有一个id,full_name和我的books表有一个id,title。 这是一些示例数据。

authors
id|full_name
------------
 1|Ben Hernandez
 2|Another Person

books
id|title
------------
 1|How to be terrible at SQL

book_author
book_id|author_id
-----------------
      1|1
      1|2

我想要的是一个返回类似

的查询
title                    |authors
---------------------------------
How to be terrible at SQL|Ben Hernandez,Another Person

现在我正在选择标题,作者使用所有三个表上的连接来给我这个:

title                    |full_name
---------------------------------
How to be terrible at SQL|Ben Hernandez
How to be terrible at SQL|Another Person

我正在使用javascript来构建一个带有结果的作者数组,这工作正常但是如果有人有办法在sql中执行此操作,我很乐意看到它。

谢谢!

1 个答案:

答案 0 :(得分:3)

进行了一些谷歌搜索并最终弄清楚了这一点:

select books.title, string_agg(authors.full_name, ', ') from books
  inner join book_author on book_author.book_id = books.id
  inner join authors on book_author.author_id = authors.id
group by books.title;