如何在SQL Server中查询TableNew里Id为NULL且TableOld中Id非NULL的用户?
解决方案:找出符合条件的用户
需求明确:要筛选出TableNew中Id为NULL,同时在TableOld中对应Name的Id不为NULL的用户(即User3、User4、User5)。
方法一:关联查询
通过Name字段关联两张表,直接筛选符合条件的记录:
SELECT tn.Name FROM TableNew tn INNER JOIN TableOld told ON tn.Name = told.Name WHERE tn.Id IS NULL AND told.Id IS NOT NULL;
方法二:子查询
先从TableOld中找出Id不为NULL的用户Name列表,再在TableNew中匹配Id为NULL且Name在该列表中的记录:
SELECT Name FROM TableNew WHERE Id IS NULL AND Name IN ( SELECT Name FROM TableOld WHERE Id IS NOT NULL );
两种方法都能得到目标结果,关联查询在数据量较大时通常性能更优,子查询的逻辑则更直观易懂。
内容的提问来源于stack exchange,提问作者user989988
相关产品推荐
相关产品推荐

