嗨,我有这种情况下,我在这里。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