Postgresql'deki başka bir tablo sütunundan gelen değerle JSONB sütunu nasıl güncellenir

0

Soru

Aşağıdaki gibi listeleyen bir kaynak tablom var:

kamu.kaynak

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

Ardından , aşağıdaki gibi listeleyen jsonb sütunlu (kombinasyonlar) hedef tablom var;

kamu.hedef

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

Benim sorunum-part_no sütununu kullanarak kaynak tablodan gelen değerlerle hedef tabloyu jsonb sütunuyla (kombinasyonlar) nasıl güncelleyebilirim?
Çıktı gibi:

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

Aşağıda denedim ama hata veriyor:

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

HATA: json türü için geçersiz giriş sözdizimi SATIR 2: Kombinasyonları AYARLA = jsonb_set (kombinasyonlar, ' {subject}', ' s.categor... ^ AYRINTI: "s" belirteci geçersiz. BAĞLAM: JSON verileri, satır 1: s... SQL durumu: 22P02 Karakter: 77

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

En iyi cevabı

1

Kullanmalısın to_jsonb dönüştürmek için işlev s.category json'a

Gösteri

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

Veya iki JSON alanını birleştirmek ve güncellemek için örnek yapıyı kullanabilirsiniz:

Gösteri

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

Mükemmel! Çok teşekkür ederim Pooya. Adam sensin!
Bogart

Diğer dillerde

Bu sayfa diğer dillerde

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