我有一个在MySQL中运行良好的查询,但是在Oracle上运行该查询时,出现以下错误:
SQL错误:ORA-00933:SQL命令未正确终止 00933。00000-“ SQL命令未正确终止”
查询是:
UPDATE table1 INNER JOIN table2 ON table1.value = table2.DESC SET table1.value = table2.CODE WHERE table1.UPDATETYPE='blah';
该语法在Oracle中无效。你可以这样做:
UPDATE table1 SET table1.value = (SELECT table2.CODE FROM table2 WHERE table1.value = table2.DESC) WHERE table1.UPDATETYPE='blah' AND EXISTS (SELECT table2.CODE FROM table2 WHERE table1.value = table2.DESC);
或者您 可以 执行以下操作:
UPDATE (SELECT table1.value as OLD, table2.CODE as NEW FROM table1 INNER JOIN table2 ON table1.value = table2.DESC WHERE table1.UPDATETYPE='blah' ) t SET t.OLD = t.NEW
它取决于内联视图是否被Oracle更新( 要更新第二条语句取决于 此处 列出的一些规则 )。