admin

如何检查是否每个主键值都被引用为另一个表中的外键

sql

我有两个表tb1和tb2。tb1中的id是pk,在tb2中称为fk。我想知道tb1是否具有ID值分别为1,2,3,4,5,而tb2具有1,2,3,4的fk_values,但没有pk
5时如何找到它。

tb1
------
id   
------
1    
------
2   
------
3    
------
4
------
while tb2

fk_id
-------
1
--
1
--
2
--
3
--
3
--

但是表2没有4的值,那么我怎么能在这里找到4的值。

使用的数据库是mysql。


阅读 214

收藏
2021-06-07

共1个答案

admin

要查找tb1中的内容,而不是tb2中的内容,请执行以下操作:

SELECT tb1.* FROM tb1 LEFT JOIN tb2 ON tb1.id = tb2.fk_id WHERE tb2.fk_id IS NULL

用另一种方式(在tb2中,但不在tb1中)进行此操作,在这种情况下不能这样做,因为有一个外键,但这对您以后可能有用的只是简单地切换两个表

SELECT tb2.* FROM tb2 LEFT JOIN tb1 ON tb1.id = tb2.fk_id WHERE tb1.id IS NULL
2021-06-07