根据另外两个表删除一行
Delete one row based on two other tables
我正在尝试删除以下行:
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 中的详细信息:
- 会员不活跃
- B选项为N,
- 到期日逾期超过 30 天。
当我使用上面的代码时,系统正在删除 MemberDetails table 中的所有内容。
我不明白为什么会这样。
有什么想法吗?
Exists 用于判断子查询是真还是假。
由于子查询 returns 为真,table 上的所有记录都将被删除。
像下面那样尝试使用 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
);
我正在尝试删除以下行:
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 中的详细信息:
- 会员不活跃
- B选项为N,
- 到期日逾期超过 30 天。
当我使用上面的代码时,系统正在删除 MemberDetails table 中的所有内容。
我不明白为什么会这样。
有什么想法吗?
Exists 用于判断子查询是真还是假。 由于子查询 returns 为真,table 上的所有记录都将被删除。 像下面那样尝试使用 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
);