根据另外两个表删除一行

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 中的详细信息:

  1. 会员不活跃
  2. B选项为N,
  3. 到期日逾期超过 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
);