我正在尝试按以下方式删除行:
DELETE MemberDetails
WHERE Exists (
SELECT m.MemberID
FROM MemberDetails m
INNER JOIN PaymentDetails pd ON
pd.MemberID = m.MemberID
INNER JOIN GDPRCompliance gd ON
gd.MemberID = m.MemberID
WHERE MActive= 'N' AND OptionB= 'N' and DATEDIFF(dd,ExpiryDate, GETDATE())>=30
);
我只想删除MemberDetails中的详细信息,其中满足以下三个条件:
当我使用上面的代码时,系统将删除MemberDetails表中的所有内容。
我不知道为什么会这样。
有什么想法吗?
Exists用于子查询为true或false。由于子查询返回true,因此将删除表上的所有记录。尝试如下所示,而不要使用Exists。
DELETE MemberDetails a
WHERE a.MemberID in (
SELECT m.MemberID
FROM MemberDetails m
INNER JOIN PaymentDetails pd ON
pd.MemberID = m.MemberID
INNER JOIN GDPRCompliance gd ON
gd.MemberID = m.MemberID
WHERE MActive= 'N' AND OptionB= 'N' and DATEDIFF(dd,ExpiryDate, GETDATE())>=30
);