PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So durchlaufen Sie PostgreSQL-jsonb-Array-Werte zum Zweck des Abgleichs innerhalb einer Abfrage

Ich habe dies gelöst, indem ich im Wesentlichen das 'unnest()'-ähnliche jsonb_array_elements() ausgeführt habe auf meinem verschachtelten jsonb-Array.

Indem ich dies in einer Unterabfrage tat und diese Ergebnisse dann mit einer Variation meiner ursprünglichen Abfrage durchsuchte, konnte ich mein gewünschtes Ergebnis erzielen.

Folgendes habe ich mir ausgedacht.

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;