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;