簡體   English   中英

如何使用 json 數組加入 2 個表,而無需密鑰 postgres

[英]How can I Join 2 tables with json array withot key postgres

我有兩張桌子,例如:

人:

name | providers_ids
-----|--------------
name1|"{1, 2}"
name2|"{3, 4}"

提供者:

id   | name
-----|--------------
1    | name_provider1
2    | name_provider2
3    | name_provider3
4    | name_provider4

我必須得到以下結果:

person.name | providers_ids
------------|--------------
name1       |name_provider1
name1       |name_provider2
name2       |name_provider3
name2       |name_provider4

我必須在 postgres 中執行此操作。 我讀到我們可以使用lateral join ,但我沒有成功。 json 數組字段類型 (provider_ids) 是varying[] 我認為我必須在加入之前轉換為另一種類型。

如果person(provider_ids)是一個合法的jsonb數組,你可以使用? 運營商

select pe.name person_name, pr.name provider_name
from person pe
inner join providers pr on pe.provider_ids ? pr.name

如果provider_ids不是jsonb (可能是json ),您需要先轉換它:

select pe.name person_name, pr.name provider_name
from person pe
inner join providers pr on pe.provider_ids::jsonb ? pr.name

最后一個選項:如果provider_ids是一個 postgres 數組,那么您可以使用 operator any

select pe.name person_name, pr.name provider_name
from person pe
inner join providers pr on pr.name = any(pe.provider_ids)

聽起來你有一個字符串數組,而不是實際的 JSON。 在這種情況下,您可以使用帶有unnest的橫向連接

SELECT person.name, providers.name as providers_ids
FROM person, unnest(person.providers_ids) as pp(id) JOIN providers USING (id)

在線演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM