如何将包含主键部分的表与 PostgreSQL 中的目标表连接起来?

问题描述 投票:0回答:1

我有一个 pk_map 表,它有 3 列: 结果_id、pk_key、pk_value

结果_id pk_key pk_值
101 客户_a 2233
101 客户端_b 3311
102 客户_a 3333
...

我还有另一个表target_table,它有复合主键

col1 col2 客户_a col4 客户端_b
--- --- 2233 --- 3311
--- --- 3333 --- 11

我想写一个sql,在主键部分连接这些表。

在结果中,我必须有 target_table (第二个),它将包含与所有 pk_map 记录相对应的所有行。换句话说,第一个表包含 target_table 结果的 id。早些时候,我做了一些 SELECT pk1, pk2 FROM target_table where smth = smth.第一个包含结果

也许这个任务用编程语言来完成会更好。请推荐我如何解决这个问题

我想也许过度分区可能会有所帮助,但现在我不擅长

sql postgresql join
1个回答
0
投票

试试这个

with client_a as (
select * from 
pk_map where pk_key = 'client_a'
)
, client_b as (
select * from 
pk_map where pk_key = 'client_b'
)
select * from 
target_table t 
    left join client_a a on a.pk_value = t.client_a
    left join client_b b on b.pk_value = t.client_b
© www.soinside.com 2019 - 2024. All rights reserved.