update..set..from..where..语句在Oracle不可用,在SQLServer可用,是不是有什么规则,下面是语句

update bl set bl.y = ob.maxy from 用户.base_label bl,
(
select max(obj.maxy) as maxy,bl.y,bl.label_id from 用户.base_obj obj,用户.base_label bl
where obj.minx<=bl.x and bl.x <= obj.maxx
and obj.miny <= bl.y and bl.y <= obj.maxy
and obj.minz <= bl.z and bl.z <= obj.maxz
and bl.label_id = bl.label_id
group by bl.label_id,bl.y
)
as ob
where bl.label_id = ob.label_id

update 用户.base_label bl
set bl.y =(select ob.max from
(
select max(obj.maxy) as maxy,bl.y,bl.label_id from 用户.base_obj obj,用户.base_label bl
where obj.minx<=bl.x and bl.x <= obj.maxx
and obj.miny <= bl.y and bl.y <= obj.maxy
and obj.minz <= bl.z and bl.z <= obj.maxz
and bl.label_id = bl.label_id
group by bl.label_id,bl.y
) as ob
where bl.label_id = ob.label_id)
from 用户.base_label bl追问

from前面报缺失set关键字

追答

update 用户.base_label bl
set bl.y =(select ob.maxy from
(
select max(obj.maxy) as maxy,bl.y,bl.label_id from 用户.base_obj obj,用户.base_label bl
where obj.minx<=bl.x and bl.x <= obj.maxx
and obj.miny <= bl.y and bl.y <= obj.maxy
and obj.minz <= bl.z and bl.z <= obj.maxz
and bl.label_id = bl.label_id
group by bl.label_id,bl.y
) as ob
where bl.label_id = ob.label_id)
from 用户.base_label bl

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-05
update  用户.base_label  bl set bl.y = ob.maxy 

(

 select max(obj.maxy) as maxy

 from 用户.base_obj obj,

 用户.base_label bl 

 where obj.minx<=bl.x and bl.x <= obj.maxx and obj.miny <= bl.y and bl.y <= obj.maxy and obj.minz <= bl.z and bl.z <= obj.maxz and bl.label_id = bl.label_id 

 and label_id =  bl.label_id

)

第2个回答  2013-11-05
Oracle 好像 没有
UPDATE 表 SET ... FROM 另外一个表 WHERE 条件 这样的写法。
第3个回答  2013-11-04
在oracle中的语法应该是:
update 表
set 字段=值
where 条件,
你的from不对吧
相似回答