을 업데이트하는 방법에 대화는 두서없이 열 값에서 나오는 다른 테이블에서 열 PostgreSQL

0

질문

나는 소스 테이블에 목록을 아래와 같다:

공개한다.원

Id | part_no | category
1 | 01270-4 | Landscape
2 | 01102-3 | Sports

그 후,나는 목표 테이블 대화는 두서없이 칼럼(조합),는 목록은 아래와 같은;

공개한다.대상

Id | part_no | combinations
7 | 01270-4 | {"subject":""}
8 | 01102-3 | {"subject":""}

내 문제입니다-나는 어떻게 업데이트할 수 있습 목표 테이블 대화는 두서없이 칼럼(조합은)값에서 나오는 원본 테이블을 사용하여 part_no 란?
출력은 다음과 같:

Id | part_no | combinations
7 | 01270-4 | {"subject":"Landscape"}
8 | 01102-3 | {"subject":"Sports"}

I tried 아래만을 주는 오류:

UPDATE public.target t
SET combinations = jsonb_set(combinations,'{subject}','s.category',false)
FROM public.source s
WHERE s.part_no = t.part_no;

오류:잘못된 입력에 대한 구문을 입력 json LINE2:설정 조합=jsonb_set(조합,'{제목}','s.categor... ^ 세부사항:토큰"s"잘못된 것입니다. CONTEXT:JSON 데이터 line1:s... SQL 상태:22P02 문자:77

jsonb postgresql
2021-11-16 15:03:01
1

최고의 응답

1

당신이 사용해야 한다 to_jsonb 변환하는 기능 s.category JSON

데모

UPDATE public.target t
SET combinations = jsonb_set(combinations,'{subject}',to_jsonb(s.category),false)
FROM public.source s
WHERE s.part_no = t.part_no

또는 사용할 수 있는 샘플에 대한 구조를 가입 업데이트 및 두 JSON 필드:

데모

UPDATE public.target t
SET combinations = combinations || jsonb_build_object('subject', s.category)
FROM public.source s
WHERE s.part_no = t.part_no
2021-11-16 15:26:04

완벽한! 매우 감사드립 Pooya. 당신은 남자!
Bogart

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................