使用其他表的值填充数组的值

时间:2012-11-20 20:18:45

标签: arrays postgresql error-handling

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

但是我跑的时候出错了:
错误:用作表达式的子查询返回的多行 有没有办法做到这一点?

1 个答案:

答案 0 :(得分: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)]