SQL脚本不允许插入

时间:2014-06-16 19:45:53

标签: sql

我有一个查询将所有产品映射到某些客户级别。在这种情况下,级别为0,5,7和8

DELETE FROM ProductCustomerLevel
WHERE CustomerLevelID IN (0, 5, 7, 8)

INSERT ProductCustomerLevel
(
ProductID,
CustomerLevelID
)
SELECT ProductID,
CustomerLevel
FROM dbo.Product p
CROSS JOIN (
SELECT 0 AS CustomerLevel UNION ALL
SELECT 5 UNION ALL
SELECT 7 UNION ALL
SELECT 8
)c

删除开始SQL脚本的原因是,任何可能已从网站删除或取消映射的产品都计入

基本上,这会将数据库中的所有产品映射到这些客户级别,以便获得折扣。

我现在需要创建一个新的客户级别,例如编号9.这些只会生成1或2个产品。

如何更改上面的SQL,以便它不会将客户级别9中已有的产品映射到级别0,5,7和8

1 个答案:

答案 0 :(得分:1)

您可以在最后添加一个WHERE子句,该子句排除所有与级别9具有现有连接的产品;

WHERE ProductID NOT IN (
  SELECT ProductID FROM ProductCustomerLevel 
  WHERE CustomerLevelID=9
)

An SQLfiddle to test with