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

Cách lặp qua các giá trị mảng PostgreSQL jsonb cho các mục đích đối sánh trong một truy vấn

Tôi đã giải quyết vấn đề này về cơ bản bằng cách thực hiện 'unnest ()' - như jsonb_array_elements() trên mảng jsonb lồng nhau của tôi.

Bằng cách thực hiện điều này trong một truy vấn con, sau đó quét các kết quả đó bằng cách sử dụng một biến thể của truy vấn ban đầu của tôi, tôi đã có thể đạt được kết quả mong muốn của mình.

Đây là những gì tôi nghĩ ra.

with dupe as (
select
json_document->>'Name' as name,
identifiers->'RecordID' as record_id
from (
  select *,  
  jsonb_array_elements(json_document->'Identifiers') as identifiers
  from staging
) sub
group by record_id, json_document
order by name
) 

select * from dupe da where (select count(*) from dupe db where 
db.record_id = da.record_id) > 1;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Số lượng SQL có điều kiện

  2. Bằng cách nào đó để thực hiện `where booleanvalue =false` trên cả Sql Server và PostgreSQL?

  3. Cách cài đặt thư viện ứng dụng kháchPostgreSQL cho PHP trên Windows có bật SSL

  4. python thêm E vào chuỗi

  5. SQLAlchemy - SQLite để thử nghiệm và Postgresql để phát triển - Làm thế nào để chuyển?