2012-11-20 41 views
2

我在postgresql中有一個表(my_table2),其中包含一個具有數組類型的列。我希望my_table1的列val1的值是我的數組(array_col)的第一個元素,而val2是array_col的第二個元素。我想出了這個查詢:使用其他表的值填充數組的值

update my_table2 
set array_col=array[ 
    (
    select val1 from my_table1) 
    , (select val2 from my_table1) 
    ] 

但是當我運行它,我得到了一個錯誤:
ERROR:由作爲表達一個子查詢返回多行 有沒有做到這一點的方法?

回答

2

您的子查詢select val1 from my_table1select val2 from my_table1正在返回多行。如果你要爲每個元素指定一個子查詢,那麼它只能返回一個元素。

取決於你有什麼......你可能會在尋找的東西更像:

的毗連兩者結合起來?

update my_table2 set array_col=array(select val1 from my_table1)||array(select val2 from my_table1)

剛剛得到一個從每個?

update my_table2 set array_col=array[(select val1 from my_table1 limit 1),(select val2 from my_table1 limit 1)]

相關問題