PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Postgres - xóa phần tử khỏi mảng jsonb

Giả sử thiếu thông tin:

  • Bảng của bạn có PK được gọi là user_id .
  • Bạn muốn xóa tất cả các phần tử có id = 2 trên toàn bộ bảng.
  • Bạn không muốn chạm vào các hàng khác.
  • id là duy nhất trong mỗi mảng 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;

Giải thích sau phù hợp với mức độ thông tin được cung cấp trong câu hỏi:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cập nhật Postgresql với tham gia

  2. Cơ sở dữ liệu postgres không tồn tại Docker-compo v3

  3. lỗi đặt java String [] thành câu lệnh chuẩn bị postgres

  4. SELECT DISTINCT chậm hơn mong đợi trên bảng của tôi trong PostgreSQL

  5. Lưu trữ hình ảnh trong các trường bytea trong cơ sở dữ liệu PostgreSQL