2014-01-05 22 views
-1

我搞砸了我的代碼,並沒有刪除這兩個表上的帖子,現在我有post_plus,應該不在那裏1000+行。Mysql:顯示一切不加入

如何顯示所有不加入的行?

例如,我有此查詢加入兩個表

SELECT * FROM post JOIN post_plus ON post_plus.news_id = post.id 

我已經試過:

SELECT * FROM post JOIN post_plus ON post_plus.news_id = post.id WHERE post.id IS NULL 

SELECT * FROM post JOIN post_plus ON post_plus.news_id = post.id WHERE post_plus.news_id IS NULL 

回答

1

如何

select * from `post_plus` left join `post` on `post`.`id` = `post_plus`.`news_id` where `post`.`id` IS NULL 
1

你可以做到這一點左加入

SELECT p.id, pp.id FROM post p LEFT JOIN post_plus pp ON (pp.news_id = p.id) 

您將獲得來自帖子的所有行,pp.id將在不匹配的行上爲空。

如果你追加一個where子句將只得到不匹配

SELECT p.id, pp.id FROM post p LEFT JOIN post_plus pp ON (pp.news_id = p.id) where pp.id is null 

(測試)

+0

#1054 - 未知列'pp.id'在'字段列表' – Orlo

+0

是的,你必須使用正確的別名,編輯帖子,再試 –

+0

相同的#1054錯誤。 – Orlo

-1

的那些或者你也可以使用這個

select * 
from post  t1 
join post_plus t2 
    on t1.id <> t2.news_id 
+0

這顯然是錯誤的。它會顯示太多結果(實際上只有非常小的行數被移除的交叉產品)。 –

+0

對不起,我犯了一個錯誤 – alexSong