dje*_*elp 2 sql-server sql-delete
我正在尝试删除主文件中存在的记录,其中包含三个字段mn_no,sb_no和dp_no的帐号不在事务表中.由于帐号可能在一个或多个交易表中,因此我需要测试其在所有交易表中的存在.当我运行以下查询时,MS-SQL在第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'
Run Code Online (Sandbox Code Playgroud)
你这里的语法不正确.请执行下列操作:
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'
Run Code Online (Sandbox Code Playgroud)
要么
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'
Run Code Online (Sandbox Code Playgroud)