2012-11-20 10 views
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) 
    ] 

하지만 난 그것을 실행하면 오류를 가지고 :
ERROR : 표현으로 사용되는 하위 쿼리에 의해 반환 된 하나 개 이상의 행이 이 그것을 할 수있는 방법이 있나요 ?

답변

2

서브 쿼리 select val1 from my_table1 또는 select val2 from my_table1이 두 개 이상의 행을 반환합니다. 각 요소에 대해 하위 쿼리를 지정하면 하나의 요소 만 반환 할 수 있습니다. 함께 두 CONCAT

: 당신은 무엇에 따라

... 당신은 더 많은 같은 것을보고 할 수 있는가?

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

관련 문제