![](/img/trans.png)
[英]How can i join 2 tables conditioned with 2 different columns in 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.