在下面的示例中,我有一个包含作者及其论文的书目表。例如,作者“001”和“003”一起写了文章“678”。
articleId | authorId
123 | 001
123 | 002
345 | 002
345 | 003
345 | 004
678 | 001
678 | 003
我需要根据他们的共同作者身份选择作者之间的共现。例如,对于上表,我需要构建下表:
AuthorA | AuthorB
001 | 002
002 | 003
002 | 004
003 | 004
001 | 003
第一个表非常大(大约 1.800.000 行)。当我第一次尝试使用 MS SQL Server 2008 时,第二张表的构建速度很快,但我现在坚持使用 MySQL。我使用以下查询:
SELECT foo.authorId AS authorA, bar.authorId AS authorB
FROM
(SELECT * FROM tblAuthorHasBib) AS foo,
(SELECT * FROM tblAuthorHasBib) AS bar
WHERE
foo.articleId = bar.articleId
AND
foo.authorId <> bar.authorId
GROUP BY foo.authorId, bar.authorId
如何将我的查询重写为与 MS SQL 一样快?提前感谢任何指针。