Sql 插入的复杂性

Sql 插入的复杂性,sql,sql-server,sql-server-2008,insert,insert-update,Sql,Sql Server,Sql Server 2008,Insert,Insert Update,我与老客户的问题,加上过时的系统。问题的一部分。这3个表包含数据库中的现有数据。让我解释一下,情况是怎样的,然后我希望你们能帮助我完成这项工作 场景: 有很多产品,特别是ProductZone,正如你所想象的 客户添加新区域(假设新区域U、V、W、X、Y、Z),不幸的是,ProductZone没有添加新区域 客户需要更新(插入)ProductZones,使所有现有产品都包含新区域和一些旧区域(假设旧区域R、s、T),如果它不存在,这里我遇到了…,需要您的帮助 说明: 如果我理解正确,我必须大

我与老客户的问题,加上过时的系统。问题的一部分。这3个表包含数据库中的现有数据。让我解释一下,情况是怎样的,然后我希望你们能帮助我完成这项工作

场景

  • 有很多产品,特别是ProductZone,正如你所想象的
  • 客户添加新区域(假设新区域U、V、W、X、Y、Z),不幸的是,ProductZone没有添加新区域
  • 客户需要更新(插入)ProductZones,使所有现有产品都包含新区域和一些旧区域(假设旧区域R、s、T),如果它不存在,这里我遇到了…,需要您的帮助
说明

如果我理解正确,我必须大量插入ProductZone,在本例中,通过复杂的T-SQL,同时插入过滤条件和insert语句


我很乐意接受任何建议,提前谢谢。

此查询将填充ProductZone表中现有产品的区域和Product表中新产品的区域

INSERT   INTO ProductZone 
SELECT ZoneNo, 
       ProductNo 
FROM   Product a 
       CROSS JOIN ZONE b 
WHERE  NOT EXISTS (SELECT 1 
                   FROM   ProductZone c 
                   WHERE  a.ProductNo = c.ProductNo 
                          AND a.zone = c.zone) 

在运行查询之前备份数据库是值得的。这样你就安全了。@Romil好极了,你真的帮了我的忙