我把我的代码搞砸了一点,并没有删除两个表上的帖子,现在我在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
答案 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