PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Актуализирайте стойността на ключа в масив от обекти jsonb

Можете да го направите с комбинация от jsonb функции и оператори :

UPDATE company c
SET    log = sub.log2
FROM  (
   SELECT *
   FROM   company c
   CROSS  JOIN LATERAL (
      SELECT jsonb_agg(jsonb_set(l, '{oldvalue}', to_jsonb(rtrim(l->>'oldvalue')))) AS log2
      FROM   jsonb_array_elements(c.log) l
      ) sub
   WHERE  jsonb_typeof(log) = 'array'  -- exclude NULL and non-arrays
   ) sub
WHERE  c.code =  sub.code   -- assuming code is unique
AND    c.log  <> sub.log2;  -- only where column actually changed.

SQL Fiddle.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво означава „изберете“ същата таблица като „от“?

  2. как postgre обработва битовия тип данни?

  3. SqlAlchemy:Запитване на дължината на json полето, което има масив

  4. psycopg2:вмъкване на няколко реда с една заявка

  5. Как да пишем с главни букви първата буква на всяка дума в PostgreSQL