PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment parcourir les valeurs de tableau PostgreSQL jsonb à des fins de correspondance dans une requête

J'ai résolu ce problème en exécutant essentiellement le jsonb_array_elements() de type 'unnest()' sur mon tableau jsonb imbriqué.

En faisant cela dans une sous-requête, puis en analysant ces résultats à l'aide d'une variante de ma requête d'origine, j'ai pu obtenir le résultat souhaité.

Voici ce que j'ai trouvé.

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;