0

2 つのテーブルを結合し、1 つのテーブルから 2 番目のテーブルに存在しない行を削除する必要があります。以下のクエリを試しています。7 つのレコードだけを削除する必要がありますが、PERSONS テーブル全体が削除されます。

DELETE PERSONS.*
FROM PERSONS
WHERE EXISTS (
    SELECT PERSONS.[IR NUMBER],
      PERSONS.[Last Name],
      PERSONS.[First Name],
      PERSONS.DOB,
      PERSONS.[Name Type]
    FROM 1 tblPERSON
    RIGHT JOIN PERSONS
      ON (
             iif(isnull([1tblPERSON].DOB) = true, "01/01/9999", [1tblPERSON].DOB) = 
             iif(isnull(PERSONS.DOB) = true, "01/01/9999", PERSONS.DOB)
         )
        AND ([1tblPERSON].FIRSTNAME = PERSONS.[First Name])
        AND ([1tblPERSON].LASTNAME = PERSONS.[Last Name])
        AND ([1tblPERSON].NAMETYPELIT = PERSONS.[Name Type])
        AND ([1tblPERSON].INCINMBR = PERSONS.[IR Number])
    WHERE (
        (
          (PERSONS.[IR Number]) IN (
            SELECT [QryIncinmbrsForDelete] ! [INCINMBR]
            FROM [QryIncinmbrsForDelete]
            )
          )
        AND (
          (PERSONS.[Last Name]) NOT IN (
            "UNKNOWN",
            "UNK",
            "UKNOWN"
            )
          )
        AND ((IsNull([1tblPERSON].[INCINMBR])) = True)
        )
    ) = true;

編集:

この例では... 1, DOE, JOHN, 1/1/1960, Cust は削除されます

1 人:

INCINMBR Last Name First Name DOB      NameType 
1        DOE       JON        1/1/1960 Cust 
1        SMITH     JOHN       2/2/1965 Emp 
1        JONES     JAY        3/3/1965 Cust 

人:

INCINMBR Last Name First Name DOB      NameType 
1        DOE       JON        1/1/1960 Cust 
1        SMITH     JOHN       2/2/1965 Emp 
1        JONES     JAY        3/3/1965 Cust 
1        DOE       JOHN       1/1/1960 Cust 
4

1 に答える 1

0

問題は、削除ステートメントに PERSONS から何を削除するかを指示していないことです。サブクエリが結果を返す場合、すべてを削除するように指示しています (そして、私が理解しているように、7 を返すことを期待していますか? )

キーに関する詳細情報を提供していただければ、完全な解決策を提供できます。

于 2013-07-25T17:59:21.210 に答える