Supprimer en utilisant où n'existe pas

J'essaie de supprimer les loggings qui existent dans un file principal où le numéro de count, qui se compose de trois champs mn_no, sb_no et dp_no, ne sont pas dans les tables de transactions. Parce que le numéro de count peut être dans une ou plusieurs tables de transaction, j'ai besoin de tester sa présence dans tous. Lorsque j'exécute la requête suivante, MS-SQL renvoie une erreur de syntaxe incorrecte près d'une ligne 1.

DELETE FROM SYACTFIL_SQL a WHERE NOT EXISTS ( SELECT b.mn_no ,b.sb_no ,b.dp_no FROM gltrxhst_sql b WHERE a.mn_no = b.mn_no AND a.sb_no = b.sb_no AND a.dp_no = b.dp_no ) AND NOT EXISTS ( SELECT b.mn_no ,b.sb_no ,b.dp_no FROM gltrxfil_sql b WHERE a.mn_no = b.mn_no AND a.sb_no = b.sb_no AND a.dp_no = b.dp_no ) AND a.mn_no <> '00000000' 

Vous avez une syntaxe incorrecte ici. Faites ce qui suit:

 DELETE a FROM SYACTFIL_SQL a WHERE NOT EXISTS ( SELECT b.mn_no , b.sb_no , b.dp_no FROM gltrxhst_sql b WHERE a.mn_no = b.mn_no AND a.sb_no = b.sb_no AND a.dp_no = b.dp_no ) AND NOT EXISTS ( SELECT b.mn_no , b.sb_no , b.dp_no FROM gltrxfil_sql b WHERE a.mn_no = b.mn_no AND a.sb_no = b.sb_no AND a.dp_no = b.dp_no ) AND a.mn_no <> '00000000' 

Ou

 DELETE FROM SYACTFIL_SQL WHERE NOT EXISTS ( SELECT b.mn_no , b.sb_no , b.dp_no FROM gltrxhst_sql b WHERE SYACTFIL_SQL.mn_no = b.mn_no AND SYACTFIL_SQL.sb_no = b.sb_no AND SYACTFIL_SQL.dp_no = b.dp_no ) AND NOT EXISTS ( SELECT b.mn_no , b.sb_no , b.dp_no FROM gltrxfil_sql b WHERE SYACTFIL_SQL.mn_no = b.mn_no AND SYACTFIL_SQL.sb_no = b.sb_no AND SYACTFIL_SQL.dp_no = b.dp_no ) AND mn_no <> '00000000'