我必須加入兩個表,並從一個表中刪除行中不存在的第二個表。我正在嘗試下面的查詢。我應該只刪除7條記錄,但它會刪除整個PERSONS表。訪問2010查詢刪除哪裏存在不工作
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,1960年1月1日,卡斯特將被刪除
1tblPERSON:
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
絕對需要上面建議的更多信息。我已經快速查看了查詢,並且應該考慮正確的外連接是否適合您的需求,因爲即使沒有找到匹配,它也會返回右表(人員)中的所有記錄,但是之後的過濾在where子句中應該減少返回的行。看一些涉及的數據肯定會對此有所幫助。 – ChrisProsser
1tblPERSON: INCINMBR姓氏名字DOB NAMETYPE 1 DOE JON 1960年1月1日卡斯特 1 SMITH JOHN 1965年2月2日的Emp 1 JONES JAY 1965年3月3日卡斯特 人數: 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 在這個例子中...... 1,DOE,JOHN,1/1/1960,Cust將被刪除 – Lele
我不確定這是否合理,因爲我無法在此帖子中獲得正確的格式。數據如下。 1tblPERSON: INCINMBR姓氏名字DOB NAMETYPE 1 DOE JON 1960年1月1日卡斯特 1 SMITH JOHN 1965年2月2日的Emp 1 JONES JAY 1965年3月3日卡斯特 人數: 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 – Lele