Salah satu kolom saya adalah jsonb dan memiliki nilai dalam format. Nilai satu baris kolom di bawah.

{
    "835": {
        "cost": 0, 
        "name": "FACEBOOK_FB1_6JAN2020", 
        "email": "test.user@silverpush.co", 
        "views": 0, 
        "clicks": 0, 
        "impressions": 0, 
        "campaign_state": "paused", 
        "processed":"in_progress", 
        "modes":["obj1","obj2"]
    }, 
    "876": {
        "cost": 0, 
        "name": "MARVEL_BLACK_WIDOW_4DEC2019", 
        "email": "test.user@silverpush.co", 
        "views": 0, 
        "clicks": 0, 
        "impressions": 0, 
        "campaign_state": "paused", 
        "processed":"in_progress", 
        "modes":["obj1","obj2"]
    }
}

Saya ingin memperbarui kolom campaign_info (nama kolom) kunci dalam "diproses" dan "model" dari campaign_id adalah "876".

Saya telah mencoba kueri ini:

update safe_vid_info 
set campaign_info -> '835' --> 'processed'='completed' 
where cid = 'kiywgh'; 

Tapi itu tidak berhasil.

Bantuan apa pun dihargai. Terima kasih.

3
Siddhant Kaushal 8 Maret 2020, 21:31

1 menjawab

Jawaban Terbaik

Apa ini yang kau inginkan?

jsonb_set(campaign_info, '{876,processed}', '"completed"')

Ini memperbarui nilai di jalur "876" > "processed" dengan nilai 'completed'.

Dalam kueri pembaruan Anda:

update safe_vid_info 
set campaign_info = jsonb_set(campaign_info, '{876,processed}', '"completed"')
where cid = 'kiywgh'; 
5
GMB 8 Maret 2020, 23:23