Oracle SQL - 使用NOT EXISTS的更新查询不起作用

时间:2014-07-30 14:56:43

标签: sql oracle oracle-sqldeveloper

我认为我的Oracle SQL语法出错了。这是我在Transact-SQL中使用的语法。

UPDATE "DE_OPS"
SET IMPORT_DATE = GETDATE()
WHERE PROCEDURE_CODE NOT IN ( SELECT DISTINCT PROCEDURE_CODE FROM DE_OPS_20140730 );

我为Oracle SQL重新定义了这个

UPDATE "DE_OPS"
 SET IMPORT_DATE = SYSDATE()
WHERE PROCEDURE_CODE NOT EXISTS ( SELECT DISTINCT PROCEDURE_CODE FROM DE_OPS_20140730);

但这会产生错误

命令行错误:3列:26 错误报告 - SQL错误:ORA-00933:SQL命令未正确结束 00933. 00000 - " SQL命令未正确结束" *原因:
*操作:

不确定我哪里出错了。 "不存在"允许子查询?

2 个答案:

答案 0 :(得分:1)

sysdate之后不需要括号。尝试:

UPDATE "DE_OPS"
 SET IMPORT_DATE = SYSDATE
WHERE PROCEDURE_CODE NOT EXISTS ( SELECT DISTINCT PROCEDURE_CODE FROM DE_OPS_20140730);

答案 1 :(得分:0)

正确的语法是 NOT EXISTS或NOT IN。你把两者混合在一起。

UPDATE "DE_OPS"
 SET IMPORT_DATE = SYSDATEECT DISTINCT PROCEDURE_CODE FROM DE_OPS_20140730);

OR

UPDATE "DE_OPS" d
 SET IMPORT_DATE = SYSDATE
WHERE NOT EXISTS (SELECT DISTINCT PROCEDURE_CODE FROM DE_OPS_20140730 WHERE PROCEDURE_CODE = d.PROCEDURE_CODE);