2016-09-29 35 views
2

我有兩個表tb1和tb2。 tb1中的id是pk,在tb2中被稱爲fk。 我想知道tb1的id值是否爲1,2,3,4,5,tb2的fk_values是否爲1,2,3,4,但沒有pk 5我如何找到它。如何檢查每個主鍵值是否被引用爲另一個表中的外鍵

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

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

但是表2沒有4的值,那麼我怎麼能找到這裏的4值。

要使用的數據庫是mysql。

回答

2

要了解什麼是在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 
0

使用left joinleft join會給你只存在於左表中的結果。這意味着你必須像這樣使用tb1 left join tb2。

// pick the tb1.id in the result when the fk_id is null. 
select tb1.id from tb1 left join tb2 on tb1.id = tb2.fk_id where tb2.fk_id is null; 
相關問題