我认为我的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命令未正确结束"
*原因:
*操作:
不确定我哪里出错了。 "不存在"允许子查询?
答案 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);