Entity_ID / Panelist_IDタプルが一方または両方のテーブルに存在するかどうかを知りたいだけの場合は、これでうまくいきます。
SELECT Panelist_ID,
Entity_ID,
CASE WHEN COUNT(A) > 0 AND COUNT(B) > 0 THEN 'Both Tables'
WHEN COUNT(B) = 0 THEN 'Table A'
WHEN COUNT(A) = 0 THEN 'Table B'
END AS Status
FROM ( SELECT Panelist_ID, Entity_ID, 1 AS A, NULL AS B
FROM A
UNION ALL
SELECT Panelist_ID, Entity_ID, NULL AS A, 1 AS B
FROM B
) T
GROUP BY Panelist_ID, Entity_ID;
各テーブルのタプルが同じで、一方のテーブルに存在せず、もう一方のテーブルに存在しないタプルがないパネリストIDを知りたい場合は、次を使用する必要があります。
SELECT *
FROM A
FULL JOIN B
ON A.Panelist_ID = B.Panelist_ID
AND A.Entity_ID = B.Entity_ID
WHERE A.Entity_ID IS NOT NULL
AND B.Entity_ID IS NOT NULL;
または、一方のテーブルに存在し、もう一方のテーブルには存在しないタプルを知りたい場合は、次のように使用できます。
SELECT *
FROM A
FULL JOIN B
ON A.Panelist_ID = B.Panelist_ID
AND A.Entity_ID = B.Entity_ID
WHERE A.Entity_ID IS NULL
OR B.Entity_ID IS NULL;
編集
一時テーブルが使用できる永続テーブルと同じであることを検証するだけでよいというコメントに基づいていますEXISTS
。
SELECT *
FROM PermanentTable p
WHERE NOT EXISTS
( SELECT 1
FROM TempTable t
WHERE p.Panelist_ID = t.Panelist_ID
AND p.Entity_ID = t.Entity_ID
... More conditions to help find if entries are missing from temp table
)