我有一个table1(PR_NOTES),我正在尝试删除table2上找不到的所有记录(DW_ECC_SAP_EBAN)。我已经尝试了几种方法,这段代码是最接近的(至少没有显示错误),我得到了我想要的东西:
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));
为了测试这段代码,我创建了一个我知道在table2中找不到的假记录:
提前感谢您的帮助。
答案 0 :(得分:1)
我这样做的方式是这样的。
DELETE FROM PR_NOTES
WHERE PR_NOTES.BANFN NOT IN (SELECT DW_ECC_SAP_EBAN.BANFN FROM DW_ECC_SAP_EBAN)
我从BANFN
中选择了所有DW_ECC_SAP_EBAN
,我告诉PR_NOTES
删除列表中没有的记录。因此,如果PR_NOTES.BANFN
不在DW_ECC_SAP_EBAN.BANFN
中,那么它将从PR_NOTES