首页 > 解决方案 > 两列处理相同的数据

问题描述

我的 SQL 查询有问题。

我有两个表 - 第一个有 ID 和人员 ID:

id | id_p | id_p2
1  |   1  |  2
2  |   2  |  3
...

在第二个中,我有人员的 ID 和他们的姓名

id_p | name
1    | John
2    | Alice
3    | Daniel
...

我需要什么 - 我需要获取一个 SQL 查询,它将返回给我的人名,但每个 id_p 都在不同的列中。所以我需要带有名字的 id_p 和带有名字的 id_p2 。这里的例子

id | id_p | id_p2 | name_p | name_p2
1  |   1  |   2   |  John  |  Alice
2  |   2  |   3   |  Alice |  Daniel
...

我怎样才能做到这一点?非常感谢!

标签: sqlpostgresql

解决方案


你需要SELF JOIN

select t.id, p.name as FirstIdPerson, p2.name as SecondIdPerson
from table t inner join
     person p
     on p.id_p = t.id_p inner join 
     person p2
     on p2.id_p = t.id_p2;

推荐阅读