2017-03-17 57 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個 行」這個謂詞「修復」了那個問題,你剛剛得到 的第一個隨機行;可能不是你想要的。你可能需要 與更新

  • 我會解決這些基本的語法錯誤,然後再試一次相關子查詢。

    相關問題