2017-05-18 44 views
0

我有一个table1(PR_NOTES),我试图删除在table2(DW_ECC_SAP_EBAN)上找不到的所有记录。我试过一些方法和这个代码是最接近的(至少没有显示错误),我已经得到了我想要的:在Access中删除SQL查询不按预期方式工作

DELETE * 
FROM PR_NOTES 
WHERE NOT EXISTS (SELECT 
DW_ECC_SAP_EBAN.BANFN, 
DW_ECC_SAP_EBAN.EKGRP, 
DW_ECC_SAP_EBAN.FRGZU, 
DW_ECC_SAP_EBAN.MENGE, 
DW_ECC_SAP_EBAN.BSMNG, 
DW_ECC_SAP_EBAN.LOEKZ, 
DW_ECC_SAP_EBAN.EBAKZ, 
DW_ECC_SAP_EBAN.PSTYP 

FROM (DW_ECC_SAP_EBAN 
LEFT JOIN PR_NOTES 
ON DW_ECC_SAP_EBAN.BANFN = PR_NOTES.BANFN)); 

为了测试此代码,我创建了一个假的记录,我知道在表2中未找到: enter image description here

的问题,是没有记录被彻底删除: enter image description here

预先感谢您的帮助。

+0

错误括号hier?! 'FROM(DW_ECC_SAP_EBAN LEFT JOIN PR_NOTES'。 –

+0

拿出来(从DW_ECC_SAP_EBAN左加入PR_NOTES ON DW_ECC_SAP_EBAN.BANFN = PR_NOTES.BANFN ...),不幸的是没有区别。 – Pucho

+0

不应该有所作为呢; - ) –

回答

1

我会这样做的方式就是这样。

DELETE FROM PR_NOTES 
WHERE PR_NOTES.BANFN NOT IN (SELECT DW_ECC_SAP_EBAN.BANFN FROM DW_ECC_SAP_EBAN) 

我选择所有BANFNDW_ECC_SAP_EBAN的,我告诉PR_NOTES删除那些不在名单上的记录。因此,如果PR_NOTES.BANFN不在DW_ECC_SAP_EBAN.BANFN那么它会从PR_NOTES删除

+0

使用此查询我收到错误“'AggregateType'不是一个有效的名称,请确保它不包含无效字符或标点符号,并且它不会太长”。我正在使用Access SQL。 – Pucho

+0

NVM,它的工作原理。我从头创建了一个新的查询。由于某种原因访问保持在后台的某种逻辑,如果你碰巧修改它们会扰乱查询... – Pucho

+1

@Pucho访问是一种.. – RBCunhaDesign