如何在连接查询中显示两列映射到第二个表中的同一列

Vai*_*esh 3 sql join group-by aggregate-functions

我有一个表T1,其中包含以下列

T1
----------
ID | Name
----------
1    Sender1
2    Receiver1
3    Receiver2
4    Sender2
Run Code Online (Sandbox Code Playgroud)

表T2

T1
---------------------
SenderID | ReceiverID
---------------------
1          2
1          3
4          2
Run Code Online (Sandbox Code Playgroud)

我想以这样一种方式加入这两个表,我想让发送者和相应的接收者分组.我想要名称而不是ID.如何在一个SQL查询中完成此操作

例如:

发件人接收人

Sender1       receiver1
              receiver2

Sender2       receiver1
Run Code Online (Sandbox Code Playgroud)

Kon*_*rak 5

select a.name Sender, b.name Receiver
FROM t2
INNER JOIN t1 a
ON t2.SenderID = a.ID
INNER JOIN t1 b
ON t2.Receiver = b.ID
Run Code Online (Sandbox Code Playgroud)

会给你:

SenderID ReceiverID
Sender1 Receiver1
Sender1 Receiver2
Sender2 Receiver1
Run Code Online (Sandbox Code Playgroud)

如果要在Sender1上对这些结果进行分组,并将接收者名称放在一列中(以\n或空格或其他内容分隔),请使用on on组a.name.例如,在MySQL中,有一个group_concat用于b.name.

然后查询变为

select a.name Sender, GROUP_CONCAT(b.name SEPARATOR ' ') Receiver
FROM t2
INNER JOIN t1 a
ON t2.SenderID = a.ID
INNER JOIN t1 b
ON t2.Receiver = b.ID
GROUP BY a.name
Run Code Online (Sandbox Code Playgroud)