我有以下sqlite3表,BookAuthor:
BookID AuthorID
B13 A02
B13 A67
B13 A13
B02 A02
B02 A67
B45 A02
B45 A13
B33 A02
想要制作这个:
Author1 Author2 NumCoAuthored
A02 A67 2
A02 A13 2
A67 A13 1
我需要帮助编写sql select语句。我甚至不知道从哪里开始或者是否可能。
请注意,数据集非常大(超过10 GB),我猜我可能不得不在块大小中执行此操作。
那么也许我应该通过AuthorID订购,并且每个作者一次与其他作者一起做?
答案 0 :(得分:2)
这应该让你开始:
SELECT
BA1.authorID AS Author1
, BA2.authorID AS Author2
, COUNT(BA1.bookID) NumCoAuthored
FROM BookAuthor BA1
JOIN BookAuthor BA2
ON BA1.bookID = BA2.bookID
AND BA1.authorID < BA2.authorID
GROUP BY BA1.authorID, BA2.authorID
查看实际操作:SQL Fiddle。
请评论是否需要调整/进一步详细说明。