Mysql:显示所有不加入的内容

时间:2014-01-05 10:45:02

标签: mysql sql

我把我的代码搞砸了一点,并没有删除两个表上的帖子,现在我在post_plus中有1000多行不应该在那里。

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

例如,我有这个查询加入两个表

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

3 个答案:

答案 0 :(得分:1)

怎么样

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

答案 1 :(得分:1)

您可以使用左连接

执行此操作
SELECT p.id, pp.id FROM post p LEFT JOIN post_plus pp ON (pp.news_id = p.id)

您将从post获取所有行,而pp.id将在那些不匹配的行上为null。

如果你追加一个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

(测试)

答案 2 :(得分:-1)

或者您也可以使用此

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