วิธีที่จะปรับปรุง JSONB คอลัมน์กับค่ามาจากอีกโต๊ะคอลัมน์ใน PostgreSQL

0

คำถาม

ผมมีแหล่งโต๊ะซึ่งรายชื่อเหมือนด้านล่างนี้:

สาธารณะแหล่งข่าว

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

งั้น,ฉันมีเป้าหมายบนโต๊ะกับ jsonb คอลัมน์(combinations)ซึ่งรายการเหมือนทางด้านล่า;

สาธารณะเป้าหมาย

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

ปัญหาของฉันเป็น-ยังไงฉันสามารถปรับปรุงเป้าหมายบนโต๊ะกับ jsonb คอลัมน์(combinations)กับค่ามาจากแหล่งโต๊ะใช้ part_no คอลัมน์?
แสดงผลแบบ:

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

ฉันพยายามด้านล่างนี้แต่ทำให้เกิดข้อผิดพลาด:

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

เกิดข้อผิดพลาด:ไม่ถูกต้องนำเข้ารูปแบบการสั่งงานสำหรับประเภท language สาย 2:ตั้งค่า combinations=jsonb_set(combinations,'{ชื่อเรื่อง}','s.categor... ^ รายละเอียด:รับตั๋วตัว"s"ใช้ไม่ได้หรือไม่ถูกต้อง คอนเท็กซ์:LANGUAGE ข้อมูลสาย 1:ขอ... ภาษา sql ของรัฐ:22P02 อักขระ:77

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

คำตอบที่ดีที่สุด

1

คุณควรใช้ to_jsonb ฟังก์ชันที่จะแปลง s.category ต้อง LANGUAGE

สาธิต

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

หรือคุณสามารถใช้ตัวอย่างโครงสร้างของเพื่อเข้าร่วมและปรับปรุงสองคน LANGUAGE ช่องข้อมูล:

สาธิต

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ý
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่