sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres - ta bort element från jsonb-arrayen

Förutsatt att information saknas:

  • Din tabell har en PK som heter user_id .
  • Du vill ta bort alla element med id = 2 över hela bordet.
  • Du vill inte trycka på andra rader.
  • id är unik inom varje array av 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öljande förklaring matchar omfattningen av tillhandahållen information i frågan:




  1. Django ORM, infoga ingen datumtid som 0 i MySQL

  2. Design av DB-tabell med många rader och många kolumner med binär information

  3. MySQL - Entity :Värdet för kolumnen 'IsPrimaryKey' i tabellen 'TableDetails' är DBNull

  4. Infoga om det inte finns, annars returnerar id i postgresql