这是我的桌子:
我需要删除那些有 NL46 ShopCode 的记录,但前提是 ProductCode 具有 ShopCode 'FR43'、'FR44' 或 'FR45'。 如果这些 ShopCode 不属于 ProductCode,我只需要保留 NL46 的行。
我使用了WindowFunction:
DELETE FROM MyTable
WHERE ShopCode = 'NL46' AND SUM(CASE WHEN SHOPCODE = 'NL46' THEN 0 ELSE 1) OVER PARTITION BY ProductCode > 0
但是不起作用。
令人困惑的是还有其他ShopCodes我不知道如何处理。
我只需使用
EXISTS
来确保“FR43”、“FR44”和“FR45”中至少之一也存在。
DELETE FROM MyTable m1
WHERE ShopCode = 'NL46'
AND EXISTS (SELECT * FROM MyTable m2
WHERE m2.ProductCode = m1.ProductCode
AND m2.ShopCode IN ('FR43', 'FR44', 'FR45'))