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

Lac*_*i K 4 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
Run Code Online (Sandbox Code Playgroud)

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

只是为了澄清这是我想从查询中得到的

结果:

ID (form table 2) | value
 3                | 4
 4                | 4
 5                | 5
 6                | 5
Run Code Online (Sandbox Code Playgroud)

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

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

Pரத*_*ீப் 9

使用 NOT EXISTS

select * 
from table2 A
Where Not exists (select 1 from table1 B Where A.ID = B.value)
Run Code Online (Sandbox Code Playgroud)

要么 LEFT OUTER JOIN

select *
from table2 A 
LEFT OUTER JOIN table1 B 
on A.ID = B.value
Where B.value IS NULL
Run Code Online (Sandbox Code Playgroud)