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)
    ]

但是当我运行它时出现错误:
错误:用作表达式的子查询返回的不止一行 有没有办法做到这一点?

4

1 回答 1

2

您的子查询select val1 from my_table1orselect 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)]

于 2012-11-20T20:53:05.023 回答