0
在下面的示例中,我有一個包含作者及其論文的書目表。例如,作者'001'和'003'一起寫了文章'678'。爲MySQL重寫SQL Server查詢
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?預先感謝任何指針。
快速,超快速。謝謝! – Andrej
該查詢返回作者的所有排列 - 例如1 | 2和2 | 1。它應該被編輯以返回唯一的組合(在上面的例子中只是1 | 2)。 – 1osmi
@ 1osmi是的,但問題中的原始SQL Server查詢也如此。 – acatt