Oracle ora-00971,update left join 时出错。

首先网上,论坛里说
查阅了资料oracle 增删改当中 不能 使用 left join,inner join以及right join 这种写法

本来写法

 update  AI_LEVEL_CERTIFICAT_SYNC sync left join ai_product p on sync.id = p.id  
 set  
 sync.CERTIFICATION_LEVEL ='C'
  where PRODUCT_ID in ('d5ae7441-00cc-402f-806b-af2423f2f60e');

发现报ORA-00971错误

如上进行查资料后,直接说怎么解决的。答案:改变写法,把updata…set 之间的语句我改变成select 语句。

 update 
		 (select * from  AI_LEVEL_CERTIFICAT_SYNC sync 
		 left join ai_product p on sync.PRODUCT_ID = p.id ) t 
 set t.CERTIFICATION_LEVEL = 'C' 
  where 
        t.PRODUCT_CODE is not null
        and t.PRODUCT_CODE in ('d5ae7441-00cc-402f-806b-af2423f2f60e');

这样改写的写法就避免了Oracle不支持的问题。

上面资料、思路来自于 :
https://bbs.csdn.net/topics/391900028?page=1
https://blog.csdn.net/wulex/article/details/84139590

你可能感兴趣的:(日常问题,数据库)