第一个查询:
select count(*) from partner_goods_category p1 where p1.partner_id = 180 and not exists
(select 1 from partner_goods_category p2 where
#p1.partner_id = 180 and
#p2.partner_id = 180 and
p1.partner_id = p2.partner_id and
p2.parent_category_id = p1.category_id);
#1067
第二个查询:
select count(*) from partner_goods_category p1 where not exists
(select 1 from partner_goods_category p2 where
#p1.partner_id = 180 and
p2.partner_id = 180 and
p1.partner_id = p2.partner_id and
p2.parent_category_id = p1.category_id);
#1956
第二个似乎给出了错误的结果。为什么会这样,这两个查询之间有什么区别?因为它们在逻辑上对我来说似乎相同(可能它们的工作方式有点不同,但它们应该产生相同的结果)。数据库是 MySQL 5.5。