2

postgresqlに配列型の列を含むテーブル(my_table2)があります。my_table1の列val1の値を配列の最初の要素(array_col)にし、val2をarray_colの2番目の要素にします。私はこのクエリを思いついた:

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_table1またはselect val2 from my_table1が複数の行を返しています。要素ごとにサブクエリを指定する場合は、1 つの要素しか返すことができません。

あなたが持っているものに応じて...あなたはもっと似たものを見ているかもしれません:

2つを連結しますか?

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

それぞれから1つだけ取得しますか?

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 に答える