sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgres - fjern element fra jsonb-array

Forudsat manglende information:

  • Din tabel har en PK kaldet user_id .
  • Du vil fjerne alle elementer med id = 2 hen over hele bordet.
  • Du ønsker ikke at røre ved andre rækker.
  • id er unik inden for hvert array af chats .

UPDATE "Users" u
SET    chats = array_remove(u.chats, d.chat)
FROM  (
   SELECT user_id, chat
   FROM   "Users", unnest(chats) chat
   WHERE  chat->>'id' = '2'
   ) d
WHERE  d.user_id = u.user_id;

Følgende forklaring matcher omfanget af de angivne oplysninger i spørgsmålet:




  1. SQL - rækkefølge efter listerækkefølge

  2. Hvordan kombinerer man dato og klokkeslæt fra forskellige MySQL-kolonner for at sammenligne med en fuld DateTime?

  3. MySql vælg næste lavere tal uden at bruge limit

  4. Understøtter PostgreSQL accentufølsomme sammenstillinger?