[访问 :删除查询要求一个参数

问题描述 投票:0回答:2

我尝试运行以下DELETE查询:

DELETE T_PROPOS.*, T_PROPOS.Projekt, T_PROPOS.[PSP-Element], T_PROPOS.Typ, T_PROPOS.Jahr, T_PROPOS.Wert, T_PROPOS.Datum
FROM T_PROPOS
WHERE NOT (((T_PROPOS.Projekt)=[T_PROPOS_Ohne_Duplikate].[Projekt]) AND ((T_PROPOS.[PSP-Element])=[T_PROPOS_Ohne_Duplikate].[PSP-Element]) AND ((T_PROPOS.Typ)=[T_PROPOS_Duplikate_löschen].[Typ]) AND ((T_PROPOS.Jahr)=[T_PROPOS_Duplikate_löschen].[Jahr]) AND ((T_PROPOS.Wert)=[T_PROPOS_Duplikate_löschen].[Wert]) AND ((T_PROPOS.Datum)=[T_PROPOS_Duplikate_löschen].[Datum]));

但是当我运行查询时,Access会询问我每个条件的参数。因此,我需要为[T_PROPOS_Ohne_Duplikate].[Projekt]等提供值。但是我想从T_PROPOS中删除不在T_PROPOS_Ohne_Duplikate中的所有行。如何使Access比较两个表?

sql ms-access sql-delete
2个回答
0
投票

嗨,

使用以下简单查询。不确定它是否可以在Access中使用。

delete from T_PROPOS where Projekt not in 
(select Projekt from T_PROPOS_Ohne_Duplikate);

谢谢


0
投票

由于您引用了两个未引用表中的列,因此请考虑两个NOT EXISTS子句。另外DELETE * FROM等效于MS Access中的DELETE FROM

DELETE
FROM T_PROPOS main
WHERE NOT EXISTS
   (SELECT 1 FROM [T_PROPOS_Ohne_Duplikate] o_dup
    WHERE main.Projekt = o_dup.[Projekt]
      AND main.[PSP-Element] = o_dup.[PSP-Element])

  AND NOT EXISTS    
   (SELECT 1 FROM [T_PROPOS_Duplikate_löschen] l_dup
    WHERE main.Typ = l_dup.[Typ]
      AND main.Jahr = l_dup.[Jahr]
      AND main.Wert = l_dup.[Wert]
      AND main.Datum = l_dup.[Datum]);
© www.soinside.com 2019 - 2024. All rights reserved.