我有一个关系数据库,其架构是:
Book (ID INTEGER PRIMARY KEY, title TEXT)
Author (ID INTEGER PRIMARY KEY, name TEXT)
BookAuthor (book_id INTEGER, author_id INTEGER)
注意:BookAuthor
表中存在明显的 FOREIGN KEY 约束,但我在上面省略了它们只是为了节省空间
BookAuthor 是将一本书与一位作者相关联的表。
现在,如果我想打印一本书及其作者,我可以使用:
SELECT book.title, author.name
FROM book
LEFT JOIN BookAuthor ON Book.id = BookAuthor.book_id
LEFT JOIN author ON author.id = BookAuthor.id
(如果我还想列出数据库中没有可用作者的书籍,则需要 LEFT JOIN
)。
输出是
Book1|Author1
Book1|Author2
Book1|Author3
Book2|Author4
Book2|Author2
Book3|Author5
...
我想知道是否有办法将所有标题合并成一行,打印类似
Book1|Author1, Author2, Author3
Book2|Author4, Author2
Book3|Author5
仅使用 SQL(当然我可以对数据进行后处理,我只是好奇是否可以)?