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

Come scorrere i valori dell'array jsonb di PostgreSQL ai fini della corrispondenza all'interno di una query

L'ho risolto essenzialmente eseguendo 'unnest()' come jsonb_array_elements() sul mio array jsonb annidato.

In questo modo in una sottoquery, quindi scansionando quei risultati utilizzando una variazione della mia query originale, sono stato in grado di ottenere il risultato desiderato.

Ecco cosa mi è venuto in mente.

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;