sql内部连接

svujldwt  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(312)

如果我有两个数据库表 users -> (id, username) 以及 messages -> (msg_id, sender_id, rec_id, text) 他们两个都加入了 users.id = messages.sender_id 还有 users.id = messages.rec_id 那么我如何打印结果如下

msg_id | sender  |  reciver  | text 
------------------------------------
1      |  david  |  michael  |  hello friend
2      |  eva    |  robert   |  pick me up

我试过这个

SELECT users.*, messages.* 
  FROM messages 
  INNER JOIN users 
  ON users.id = messages.sender_id 
  AND users.id = messages.rec_id

但好像没有我想要的那样。。你知道吗
更新它似乎不工作,它给发送者和接收者的名字是相同的,这是错误的!!

msg_id | sender  |  reciver  | text 
------------------------------------
1      |  david  |  david  |  hello friend
2      |  eva    |  eva    |  pick me up
at0kjp5o

at0kjp5o1#

在您当前的条件下,用户id等于发送方id和接收方id,这意味着您将只查询某人自己发送的消息—这可能不是您想要实现的。相反,你可以加入 users 两次,一次给发送方,一次给接收方:

SELECT m.msg_id, s.username AS sender, r.username AS receiver, m.text
FROM   messages m
JOIN   users s ON m.sender_id = s.id
JOIN   users r ON m.rec_id = r.id
8xiog9wr

8xiog9wr2#

你可能想加入多次

SELECT users1.*, users2.*,messages.* 
  FROM messages 
  INNER JOIN users1 
  ON users1.id = messages.sender_id 
  INNER JOIN users2 
  AND users2.id = messages.rec_id
0ejtzxu1

0ejtzxu13#

你需要两个 join 学生:

SELECT m.*, us.username as sender_name, ur.username as receiver_nae
FROM messages m JOIN
     users us
     ON us.id = m.sender_id JOIN
     users ur
     ON ur.id = m.rec_id;

相关问题