2016-09-29 3 views
2

私は2つのテーブル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です。

答えて

2

TB1に何を見つけるが、TB2にはこれないために:それを外国人がある、ので、この場合にすることはできません、他の方法(TB2ではなく、TB1中)を、行うには

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

をキーが、あなたは、後で簡単に

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

left join使用する2つのテーブルを切り替えるためにどれも少なく、それが役に立つかもしれません。 left 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; 
関連する問題