2009-10-19 39 views
0

我有一個MySQL的問題:MySQL的作者發現沒有職位(一個一對多的關係)

我在一兩個表(帖和作者)一對多的關係(因爲每個柱以書面作者和作者可以寫多個帖子)。

因此,這裏的表:

作者:ID:BIGINT,名稱:VARCHAR(255) 文章:ID:BIGINT,AUTHOR_ID:BIGINT,身體:TEXT。

如何檢索所有沒有帖子的作者?

我一直試圖做的是:

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

但它採取的年齡!

在這兩個表中有300,000名作者和1,000,000個帖子!

任何更快的方法?

謝謝你們!

+0

LEFT JOIN/IS NULL與MySQL中的NOT IN等效:http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is -null MySQL的/ – 2009-10-19 18:28:05

回答

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

信貸@約翰第一個正確的答案:)

0

也許這?

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