我想根据select statment中的值更新表invdtl中的列prtnum和revlvl,这里是代码
update invdtl set invdtl.prtnum = usr_prtmst_xref.prtnum,invdtl.revlvl =
usr_prtmst_xref.colnam ([select
invdtl.prtnum,usr_prtmst_xref.prtnum AS
crossref,invdtl.revlvl,aremst.arecod,aremst.fwiflg from invdtl
join usr_prtmst_xref
on usr_prtmst_xref.prtnum = usr_prtmst_xref.prtnum
join invsub
join invlod
join locmst
join aremst
on aremst.arecod = locmst.arecod
and aremst.wh_id = locmst.wh_id
on locmst.stoloc = invlod.stoloc
and locmst.wh_id = invlod.wh_id
on invlod.lodnum = invsub.lodnum
on invsub.subnum = invdtl.subnum where aremst.arecod = 'EXPR' or
aremst.fwiflg = '1' and rownum <2])
我想复制select语句返回的两个值prtnum和revlvl,但是存在一些语法问题。
答案 0 :(得分:0)
这里有一堆错误:
- 多列更新的语法基本上是
醇>
update blah
set ( col1, col2 ) = ( select x, y
from
...
)
- 多个连接的语法基本上是
醇>
from table1 t1
join table2 t2
on t1.col = t2.col
join table3 t2 on
t2.col = ...
乘坐“[”和“]”
- 相关联 醇>
谓词
rownum<2
可能是为了解决您收到的消息,例如“单行子查询返回的值超过1 行“哪个这个谓词”修复了“那个问题,你刚刚得到 第一个随机行;可能不是你想要的。你可能需要 将子查询与更新
我会解决这些基本的语法错误,然后再试一次。