2015-12-28 90 views
0

我很欣賞這個有什麼建議所有行的一列在一個表中的數據..更新另一個表

我有兩個表在那裏我有更新駐留在另一個數據在我的主表中的列次表。我不能依賴觀點等,因爲這些數據必須能夠在未來的APEX中由用戶編輯。我基本上是爲用戶預填充數據以減少他們的手動輸入。

主表= Table 1

二次表= Table 2

列於Table 1 = FTE_ID被更新,ACCOUNT_TYPE

列,其中數據將來自Table 2 = R_IDACCOUNT_TYPE

兩個表中的公共列= TABLE1.FIDTABLE2.FID

以下是我已經盡力了,但我得到「單行子查詢返回多個行」,因爲有多個table1.fid行中table1。我基本上想要爲TABLE1.FID = TABLE2.FID的所有行執行此更新。

這裏是我的嘗試:

UPDATE TABLE1 
SET TABLE1.FTE_ID = 
(SELECT TABLE2.R_ID FROM TABLE2 WHERE TABLE1.FID = TABLE2.FID); 

錯誤:

single-row subquery returns more than one row

感謝您的幫助,

回答

0

您可以通過使用聚集或行號修復接近問題:

UPDATE TABLE1 
    SET TABLE1.FTE_ID = (SELECT MAX(TABLE2.R_ID) 
         FROM TABLE2 
         WHERE TABLE1.FID = TABLE2.FID 
         ); 

T他子查詢只能返回一行;它是來自可能匹配值的「任意」值。

如果該字段是一個字符字段,並且希望所有的匹配值,那麼也許listagg是比較合適的:

UPDATE TABLE1 
    SET TABLE1.FTE_ID = (SELECT LISTAGG(t2.R_ID, ',') WITHIN GROUP (ORDER BY t2.R_ID) 
         FROM TABLE2 t2 
         WHERE TABLE1.FID = t2.FID 
         ); 
+0

這實際上讓我體會到實際問題是,我有兩個表一式兩份,因此你的listagg解決方案。輝煌!我正在測試新的(修改過的)表格。謝謝 – Ewaver