日期:2014-05-17  浏览次数:20849 次

求助,这个sql语句在mssql可以通过,但在oracle却不能
SQL code

update t1 set t1.ReturnAddress = t2.ReturnAddress from ERCP_PayResult t1 inner join inserted  t2 on t1.OrderNo=t2.OrderNo



------解决方案--------------------
update t1 set t1.ReturnAddress = t2.ReturnAddress from ERCP_PayResult t1 inner join inserted t2 on t1.OrderNo=t2.OrderNo
从来不写这样的sql
update语句应该针对一张表吧 update table set column=‘’where filter
两个表join以后再update oracle会乱的
反正让我写的话 我就写成
update ERCP_PayResult t1 set t1.ReturnAddress = (select t2.ReturnAddress from inserted t2 where t1.OrderNo=t2.OrderNo)
因为感觉你的join没什么用处 所以我换成等值连接了 如果确实需要内连接 你也可以按这种方式改一下
总之 update尽量保证只操作一张表
------解决方案--------------------
你说的没错,这种方式在oracle中是不能执行的,但是oracle中有替代的形式:
update (select ......) set .....
oracle确实这个很恶心
------解决方案--------------------
update (select col1,col2 from table1,table2 where 条件 ) set col2=col1
oracle还有一种类型/
------解决方案--------------------
顶一下
update table
set column=(select ...)