基于ProductCode,用Join实现表间无重复数据插入需求
解决SQL插入重复数据问题(使用Join实现去重)
要实现仅将数据源表[dbo].[Sheet1$]中目标表ProductCategoryMapping2不存在的ProductCode数据插入目标表,且必须通过Join实现(禁止子查询),可以通过LEFT JOIN关联两张表,筛选出目标表中无匹配的记录进行插入,修改后的代码如下:
INSERT INTO ProductCategoryMapping2 ( [ProductCode] , [ProductName] , [Category] , [IsActive] , [Division] , [SubCategory]) SELECT TRIM(STR(s.MATCODE, 25, 0)) AS ProductCode , s.MATNAME AS ProductName , s.[OPERATIONS_PROD_CATEGORY_NAME] AS Category , IIF(s.[MAT_BRAND_STATUS_NAME] = 'Active', 1, 0) AS [IsActive] , s.[OPERATIONS_PROD_DIVISION_NAME] AS Division , s.[OPERATIONS_PROD_SUBCATEGORY_NAME] AS SubCategory FROM [dbo].[Sheet1$] s LEFT JOIN ProductCategoryMapping2 t ON TRIM(STR(s.MATCODE, 25, 0)) = t.ProductCode WHERE t.ProductCode IS NULL
代码说明:
- 通过
LEFT JOIN将数据源表s和目标表t以ProductCode为关联条件进行匹配 WHERE t.ProductCode IS NULL筛选出所有在目标表中没有对应ProductCode的数据源记录,这些就是需要插入的新数据- 这样每次执行存储过程时,只会插入目标表中不存在的ProductCode数据,彻底避免重复插入问题
内容的提问来源于stack exchange,提问作者Baba Ranjith
相关产品推荐
相关产品推荐

