查找不匹配的ID

时间:2016-05-18 03:57:59

标签: mysql sql join match

我有两张桌子,名为" One"和"两个",它们都是相同的,表"一个"表格中有一些不存在的ID"两个"。但是当我运行这个mysql查询时,我无法获得那些不匹配的值。

select count(bene) from one where bene not in (select bene from two);

结果是零。那么如何从表1中得到表2中不存在的非匹配值?

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)