嗨,我有這種情況下,我在這裏。SQL:比較兩個表
我有兩個表格A和表格B,它們有一個共同的主鍵(panelist_id),每個panelist_id都有很多的entity_id。
我想檢查是否爲每個panelist_id和相同的entity_ids都存在於表中或沒有。
注:有很多panelist_id的和每個panelist_ids有很多entity_ids ..
請幫助我。
嗨,我有這種情況下,我在這裏。SQL:比較兩個表
我有兩個表格A和表格B,它們有一個共同的主鍵(panelist_id),每個panelist_id都有很多的entity_id。
我想檢查是否爲每個panelist_id和相同的entity_ids都存在於表中或沒有。
注:有很多panelist_id的和每個panelist_ids有很多entity_ids ..
請幫助我。
Select A.panelist_id from tableA as A inner join tableB as B
on A.panelist_id=B.panelist_id
GROUP BY A.panelist_id
HAVING COUNT(DISTINCT A.entity_id)=COUNT(DISTINCT B.entity_id)
要選擇panelist_id/ENTITY_ID元組,其僅在表中的一個可用的,你試試這樣做:
select panelist_id, entity_id from
(
select panelist_id, entity_id from a
union all
select panelist_id, entity_id from b
)
group by panelist_id, entity_id
having count(*) = 1;
我不能工作了,你問什麼,如果你只是想知道每個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;
如果你想知道哪裏panelist_IDs每個表中的元組是在S AME,沒有元組存在一個表不存在於另一方案則需要使用:
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
)
詳細情況如下。我有一個臨時表,我使用很多連接條件創建了一個臨時表,並且我有另一個永久表,它是某個進程的輸出表。現在我需要檢查填充在臨時表和輸出表中的數據是否匹配。所以我有主鍵作爲小組成員id,每個panelist_id都有幾千個entity_id。我檢查了兩個表中的panelist_ids是相同的。現在我需要檢查是否爲每個panelist_id,相同的entity_ids正在填充或不填充。 –
非常感謝。 –
那麼你有什麼嘗試? –
這是什麼RDBMS? –
您使用的是什麼RDBMS?你也可以給我們一個表A和表B的表定義。還有一個例子,你的數據和你期望的結果也會有幫助。 – twoleggedhorse