我有一个查询将所有产品映射到某些客户级别。在这种情况下,级别为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
答案 0 :(得分:1)
您可以在最后添加一个WHERE子句,该子句排除所有与级别9具有现有连接的产品;
WHERE ProductID NOT IN (
SELECT ProductID FROM ProductCustomerLevel
WHERE CustomerLevelID=9
)