MySQL找不到帖子的作者(一对多关系)

时间:2009-10-19 18:21:07

标签: sql mysql

我遇到了MySQL问题:

我在一对多的关系中有两个表(帖子和作者)(因为每个帖子都是由作者写的,作者可以写多个帖子。)

以下是表格:

作者:id:BIGINT,名称:VARCHAR(255) 帖子:id:BIGINT,author_id:BIGINT,body:TEXT。

如何检索所有没有帖子的作者?

我一直想做的是:

SELECT * 
FROM Authors 
WHERE id NOT IN (SELECT author_id 
                 FROM Posts 
                 GROUP BY author_id);

但这需要很长时间!!!

在这两个表中有300,000个作者和1,000,000个帖子!

任何更快的方式?

谢谢你们!

3 个答案:

答案 0 :(得分:4)

看到这个问题:
 MySQL - Query All users WITHOUT an appointment

答案应该是一样的。

另外,请确保您在ID和Author_ID上有索引。

答案 1 :(得分:3)

SELECT *
FROM Authors
LEFT JOIN Posts ON (Authors.id = Posts.author_id)
WHERE Posts.author_id IS NULL

归功于@john的第一个正确答案:)

答案 2 :(得分:0)

也许这个?

SELECT * FROM Authors a
WHERE NOT EXISTS (SELECT *
                  FROM Posts p
                  WHERE p.author_id=a.id)