我在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)
]
但是我跑的时候出错了:
错误:用作表达式的子查询返回的多行
有没有办法做到这一点?
答案 0 :(得分:2)
您的子查询select val1 from my_table1
或select 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)]