簡體   English   中英

使用多列在 postgres 中更新 json

[英]Update json in postgres using multiple columns

我想更新一列 JSONB 對象。 所以如果我有這張桌子

另一張桌子 我想從具有 as 1 的行中刪除 value1 和 value2 然后我認為這個查詢會起作用

UPDATE
    test AS d 
SET
    b = b - s.b_value 
FROM
    (VALUES
        (1, 'value1'),
        (1, 'value2')
    )
    AS s(a, b_value) 
WHERE
    d.a = s.a

但它給了我這個沒有消除 value1 的結果。 一些桌子

有沒有簡單的方法來解決它? 我想進行查詢以刪除此類內容,但如果只能在一個查詢中完成,那將是一件好事。 我從這里得到了最初的想法,在這里你可以測試 SQL 查詢

您可以從 jsonb 值中減去一個text[]鍵數組,如下所示:

with s (a, b_value) as (
  values (1, 'value1'), (1, 'value2')
), dels as (
  select a, array_agg(b_value) as b_values
    from s
   group by a
)
update test
   set b = b - dels.b_values
  from dels
 where dels.a = test.a;

db<> 在這里擺弄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM