sql连接通过链接表合并重复项逗号分隔
我有一个经典的三表联接:sql连接通过链接表合并重复项逗号分隔,sql,join,sqlite,Sql,Join,Sqlite,我有一个经典的三表联接: 书籍(书号、书名等) 人(人名、姓名等) PersonBookLink(BookID、PersonID、角色) 我有经典的内部连接: SELECT Book.Title as title, Person.Name as author FROM PersonBookLink INNER JOIN Book ON PersonBookLink.BookID = Book.BookID INNER JOIN Person ON Pe
- 书籍(书号、书名等)
- 人(人名、姓名等)
- PersonBookLink(BookID、PersonID、角色)
内部连接
:
SELECT Book.Title as title, Person.Name as author
FROM PersonBookLink
INNER JOIN Book
ON PersonBookLink.BookID = Book.BookID
INNER JOIN Person
ON PersonBookLink.PersonID = Person.PersonID
;
这与预期的一样有效,但我可能有多个条目用于同一本书
,因为它可能有多个作者
我希望合并这样的记录,每个书籍只有一个条目
,并且在格式中有一个组合的作者
字段“Author1,Author2,…”
。这可以直接用SQL实现吗
我知道我可以通过编程方式合并结果集中的记录,但这相当混乱,如果可能的话,我希望避免
如果有必要的话,我目前正在使用SQLite3数据库
注意:我看到了,但我不需要计算结果,只需要连接它们。您需要一个分组依据和分组条件()
注意,我在查询中引入了表别名。它们使查询更易于编写和阅读。您需要一个分组依据和分组条件()
注意,我在查询中引入了表别名。它们使查询更易于编写和阅读。下面的查询可以解决您的问题
SELECT Book.Title as title, group_concat(Person.Name) as author
FROM PersonBookLink
INNER JOIN Book ON PersonBookLink.BookID = Book.BookID
INNER JOIN Person ON PersonBookLink.PersonID = Person.PersonID
GROUP BY Book.Title
group_concat使用可选的第二个参数(字符串)作为连接分隔符,如果您不需要单个“,”字符。下面的查询可以解决您的问题
SELECT Book.Title as title, group_concat(Person.Name) as author
FROM PersonBookLink
INNER JOIN Book ON PersonBookLink.BookID = Book.BookID
INNER JOIN Person ON PersonBookLink.PersonID = Person.PersonID
GROUP BY Book.Title
group_concat采用可选的第二个参数(字符串)作为串联分隔符(如果您不需要单个“,”字符)