我遇到了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个帖子!
任何更快的方式?
谢谢你们!
答案 0 :(得分:4)
答案 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)