SQL Server:如何查询ERP_IMPORT_COMP中未在OR_ORDER存在的全字段记录
实现方法
当然可以实现,以下是几种常用的可行写法:
方法一:使用NOT EXISTS(推荐,性能更稳定)
这种方式在处理大表时表现更优,尤其是当OR_ORDER.NAME字段有索引时:
SELECT * FROM ERP_IMPORT_COMP e WHERE NOT EXISTS ( SELECT 1 FROM OR_ORDER o WHERE o.NAME = e.ORD_NAME )
方法二:使用NOT IN
注意如果OR_ORDER.NAME存在NULL值,NOT IN会导致结果为空,使用时建议过滤掉NULL值:
SELECT * FROM ERP_IMPORT_COMP WHERE ORD_NAME NOT IN ( SELECT NAME FROM OR_ORDER WHERE NAME IS NOT NULL )
方法三:基于原EXCEPT语句扩展
保留你原来的EXCEPT逻辑,再关联回原表获取所有字段:
SELECT e.* FROM ERP_IMPORT_COMP e JOIN ( SELECT ORD_NAME FROM ERP_IMPORT_COMP EXCEPT SELECT NAME FROM OR_ORDER ) AS missing_names ON e.ORD_NAME = missing_names.ORD_NAME
内容的提问来源于stack exchange,提问作者tt_time
相关产品推荐
相关产品推荐

