如何为不同的列连接相同的数据?

时间:2019-05-16 17:14:05

标签: sql

我正在努力查询以加入相应的替换ID。 我有两个表USERS和CONNECTIONS。

用户:

user_id  first_name
--------------------
     3   Jim
     4   Pam
     5   Michael

连接:

user_id  friend_id
--------------------
     3   4
     4   3
     4   5
     5   4

在“连接”中,两列均包含“用户”中的user_id,以表示人员之间的连接。 我需要如下结果:

user     friend
----------------
Jim       Pam
Pam       Jim
Pam       Michael
Michael   Pam

2 个答案:

答案 0 :(得分:0)

Connections表与Users表联接在一起可以得到预期的结果。

使用U1.user_id = C.user_id获取user,然后使用U2.user_id = C.friend_id获取friend值。

SELECT U1.first_name AS user, U2.first_name AS friend
FROM Connections C
JOIN Users U1 ON U1.user_id = C.user_id
JOIN Users U2 ON U2.user_id = C.friend_id

Demo on db<>fiddle

输出:

user        friend
--------------------
Jim         Pam
Pam         Jim
Pam         Michael
Michael     Pam

答案 1 :(得分:0)

[这是用于SQL Server。不知道OP正在使用postgres。]

这应该可以解决问题。只需两次加入用户表(一次用于该用户,另一次用于朋友)

SELECT
     [User].[first_name] AS [UserName]
    ,[Friend].[first_name] AS [FriendName]
FROM [User]
    INNER JOIN [Connections] ON [Connections].[user_id] = [User].[user_id]
    INNER JOIN [User] AS [Friend] ON [Friend].[user_id] = [Connections].[friend_id]