我有两张桌子,名为" One"和"两个",它们都是相同的,表"一个"表格中有一些不存在的ID"两个"。但是当我运行这个mysql查询时,我无法获得那些不匹配的值。
select count(bene) from one where bene not in (select bene from two);
结果是零。那么如何从表1中得到表2中不存在的非匹配值?
答案 0 :(得分:1)
您可以执行左连接并仅查找第二个表中不存在的值。以下查询假设bene
是您的ID列:
SELECT one.*
FROM one
LEFT JOIN two ON one.bene = two.bene
WHERE two.bene IS NULL
或者如果您只需要计数
SELECT COUNT(one.bene)
FROM one
LEFT JOIN two ON one.bene = two.bene
WHERE two.bene IS NULL
执行左连接时,您会在表one
中找到表two
中的相应值的所有值。如果没有匹配,则所有表two
值都为NULL
。
然后,作为第二步,您使用WHERE
仅过滤表NULL
two
的行。这样,您可以在表one
中找到表two
中没有匹配记录的所有记录。
答案 1 :(得分:0)
select count(*) from one a where not exists (select * from two b where a.bene=b.bene)