SQLite3选择语句查询

时间:2016-07-17 07:48:36

标签: sql sqlite

我有以下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订购,并且每个作者一次与其他作者一起做?

1 个答案:

答案 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

请评论是否需要调整/进一步详细说明。