我有一个名为users
的表,如下所示:
+----+----------------+
| id | name |
+----+----------------+
| 1 | Blake |
| 2 | Jenn |
+----+----------------+
我有一个名为msg
的表,如下所示:
+----+----------------+----------------+
| id | sender | receiver |
+----+----------------+----------------+
| 1 | 1 | 2 |
| 2 | 2 | 1 |
+----+----------------+----------------+
所以现在我遇到了一个问题,因为我无法弄清楚如何将msg.sender(id)加入users.name(name)。
基本上我想要最终得到的东西,看起来有点像这样:
+----+----------------+----------------+----------------+----------------+
| id | sender | sender_name | receiver | receiver_name |
+----+----------------+----------------+----------------+----------------+
| 1 | 1 | Blake | 2 | Jenn |
| 2 | 2 | Jenn | 1 | Blake |
+----+----------------+----------------+----------------+----------------+
我希望这些插图对我试图解释的内容有所帮助。
答案 0 :(得分:4)
join
表只需users
两次msg
表 - 一旦发件人,然后是接收者。
select m.*,
s.name as sender_name,
r.name as receiver_name
from msg m
join users s on m.sender = s.id
join users r on m.receiver = r.id;
答案 1 :(得分:2)
您应该使用别名
两次加入用户表 select msg.sender, u1.name as sender_name, msg.receiver, u2.name as receiver_name
from msg
inner join users u1 on u1.id = msg.sender
inner join users u2 on u2.id = msg.receiver