在INNER JOIN上更新“SQL命令未正确结束”

时间:2017-07-08 20:19:24

标签: sql oracle join

UPDATE TABLE1 SET COL1 = 'UPDATED'  
INNER JOIN TABLE2 ON TABLE1.ID = TABLE2.ID
WHERE COL2 = '1' AND COL3 IN('A','B') AND COL4 = 'NEW'

以上命令抛出'SQL命令未正确结束',我可以知道它为什么会发生吗? 注意:COL2,COL2位于TABLE1中,而COL4位于TABLE2中,如果有帮助的话。

1 个答案:

答案 0 :(得分:1)

Oracle不支持update语法中的显式连接(在某些条件下使用子查询时,它确实支持连接)。像这样的查询应该有效:

update TABLE1 
    set COL1 = 'UPDATED' 
    where col2 = '1' and col3 in ('A', 'B') and col4 = 'NEW' and
          exists (select 1
                  from TABLE2
                  where TABLE1.ID = TABLE2.ID
                 );

where中的条件可能需要在子查询中进行,如果它们引用TABLE2