我有一个 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.第一个包含结果
也许这个任务用编程语言来完成会更好。请推荐我如何解决这个问题
我想也许过度分区可能会有所帮助,但现在我不擅长
试试这个
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