编写T-SQL查询:找出已发送给供应商但未返回的MemberID
找出未被供应商返回的MemberID的T-SQL查询方法
我们将TABLE1(发送给供应商的数据)中的成员数据提供给供应商,供应商返回包含新信息的TABLE2数据,两者通过MemberID字段匹配。以下是几种实用的T-SQL查询方法,用于找出TABLE1中存在但TABLE2中未返回的MemberID:
方法1:LEFT JOIN 结合 NULL 判断
SELECT t1.MemberID FROM TABLE1 t1 LEFT JOIN TABLE2 t2 ON t1.MemberID = t2.MemberID WHERE t2.MemberID IS NULL;
通过LEFT JOIN保留TABLE1的所有记录,TABLE2中无法匹配的记录对应的字段会显示为NULL,过滤这些行即可得到未被返回的MemberID。
方法2:使用 NOT EXISTS
SELECT MemberID FROM TABLE1 WHERE NOT EXISTS ( SELECT 1 FROM TABLE2 WHERE TABLE2.MemberID = TABLE1.MemberID );
逐个检查TABLE1中的MemberID,如果在TABLE2中不存在匹配项,则保留该记录,逻辑直观且性能表现优异。
方法3:使用 EXCEPT 集合操作
SELECT MemberID FROM TABLE1 EXCEPT SELECT MemberID FROM TABLE2;
EXCEPT会返回第一个查询结果中存在、但第二个查询结果中不存在的记录,自动完成去重,适合快速对比两个数据集的差异(需SQL Server 2005及以上版本支持)。
内容的提问来源于stack exchange,提问作者Austin
相关产品推荐
相关产品推荐

