2017-03-17 62 views
0

我想根据从选择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]) 

我想复制两个值prtnum和revlvl由select语句返回,但有一些语法问题。

+0

如果您有错误,请显示您的确切错误信息 – scaisEdge

+0

您正在使用哪个db? – scaisEdge

+0

@scaisEdge错误是意想不到的令牌= –

回答

0

有一堆错误这里:

  1. 用于多列的更新的语法是基本上
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个 行”这个谓词“修复”了那个问题,你刚刚得到 的第一个随机行;可能不是你想要的。你可能需要 与更新

  • 我会解决这些基本的语法错误,然后再试一次相关子查询。

    相关问题