我想找到两个表之间的区别,因为表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中链接的项目多得多
如何进行返回上述结果的查询?
答案 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