[英]Find duplicates between two SQL tables
我有两个具有相同主键的表(Table1和Table2),可以说Key1和Key2。 我需要做的是将表1中的记录分为两组,即重复项(在Table2中找到记录)和非重复项。 我知道我可以使用以下内容,但这看起来很and肿且重复。 有没有一种微调的方法可以做到这一点,可能只需要一个电话?
SELECT Key1, Key2 FROM Table1 WHERE Key1 IN (SELECT Key1 FROM Table2) AND Key2 IN (SELECT Key2 FROM Table2);
SELECT Key1, Key2 FROM Table1 WHERE Key1 NOT IN (SELECT Key1 FROM Table2) AND Key2 NOT IN (SELECT Key2 FROM Table2);
;
此调用是从C#ASP.NET代码隐藏页进行的。
该查询执行左外部联接以确保返回table1中的所有记录。 它在Table2上联接,如果没有匹配项,则该行的Table2中的任何列都将为NULL。 在CASE语句中使用此行为来设置标志,以告知表1行在表2中是否存在:
select t1.*,
case when t2.Key1 is null then 'false' else 'true' end as IsDuplicate
from Table1 t1
left outer join Table2 t2 on t1.Key1 = t2.Key1
and t1.Key2 = t2.Key2
然后,您可以根据IsDuplicate
列过滤应用程序。
在SQL2008中检查新的upsert语句SQL2008中的Upsert
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.