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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值