我在 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)
]
但运行时出现错误:
错误:用作表达式的子查询返回多行
有办法实现吗?
最佳答案
您的子查询 select val1 from my_table1
或 select val2 from my_table1
返回多行。如果您要为每个元素指定一个子查询,那么它只能返回一个元素。
根据您所拥有的...您可能会看到更像是的东西:
将两者连接在一起?
更新 my_table2 set array_col=array(从 my_table1 中选择 val1)||array(从 my_table1 中选择 val2)
每个人都拿一个?
更新 my_table2 set array_col=array[(从 my_table1 限制 1 中选择 val1),(从 my_table1 限制 1 中选择 val2)]
关于arrays - 用其他表的值填充数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13481401/