Mysql比较两个表并只显示差异

时间:2015-07-05 12:32:37

标签: mysql sql

我想找到两个表之间的区别,因为表2中有一列链接到表1 ID列,但遗憾的是站点管理器从表1中删除了项目,现在有很多未链接的行表2中导致网站出现问题的原因。

例如,这里是表结构

Table 1          table 2

ID | name      ID | value (this is the ID from table 1) 
1  | one       1  | 1
2  | two       2  | 2
3  | three     3  | 4
6  | six       4  | 4
7  | seven     5  | 5
               6  | 5
               7  | 6
               8  | 7
               9  | 1
               10 | 1

正如您在表2中看到的那样,表1中的一些ID分为多行,我希望得到表1中不存在的所有ID作为查询的返回。

为了澄清这一点,我想从查询中获得

结果:

ID (form table 2) | value
 3                | 4
 4                | 4
 5                | 5
 6                | 5

我知道我可以使用例如NOT IN但是我必须使用大约1000个ID,而表1包含的项目比表2中链接的项目多得多

如何进行返回上述结果的查询?

1 个答案:

答案 0 :(得分:8)

使用NOT EXISTS

select * 
from table2 A
Where Not exists (select 1 from table1 B Where A.ID = B.value)

LEFT OUTER JOIN

select *
from table2 A 
LEFT OUTER JOIN table1 B 
on A.ID = B.value
Where B.value IS NULL