2014-12-11 4 views
0

다른 테이블 참조 열로 hstore 키 값을 업데이트하려고합니다.postgresql 작은 따옴표로 인용 할 때 열 이름 값 사용

SET misc = misc || ('domain' => temp.domain) 

그러나 괄호 안의 모든 것을 인용해야하기 때문에이 오류로 간단한 구문 :

SET misc = misc || ('domain=>temp.domain')::hstore 

그러나 실제로 문자열로 temp.domain이 아닌 값을 삽입합니다. 대신 temp.domain 값을 전달할 수 있습니까?

+0

"temp.domain"은 "temp"테이블의 "domain"열에있는 값을 의미합니까? 그렇다면 * * 값? –

+0

WHERE ev.id = temp.id로 끝나는이 쿼리의 유일한 부분 – Giedrius

답변

1

텍스트를 하위 쿼리와 연결하여 결과를 hstore 유형으로 캐스팅 할 수 있습니다.

create temp table temp (
    temp_id integer primary key, 
    domain text 
); 
insert into temp values (1, 'wibble'); 

select ('domain => ' || (select domain from temp where temp_id = 1))::hstore as key_value 
from temp 
 
key_value 
hstore 
-- 
"domain"=>"wibble" 

업데이트는 비슷한 방식으로 작동합니다.

+0

감사합니다. 완벽하게 작동했습니다. 복잡한 작업이 얼마나 간단한 지 알게되었습니다. – Giedrius

관련 문제