如何将两列连接到同一个表

时间:2014-06-03 06:59:19

标签: mysql sql sql-server

我有一个名为messages的SQL表,它有三列

1. UserFrom uniqueidentifier
2. UserTo uniqueidentifier
3. Messagen varchar(50)

此表用于存储从一个用户发送到另一个用户的消息,它存储来自UserId而不是aspnet_Users的{​​{1}},现在我需要创建一个显示的视图usernameUserFrom作为名称,方法是使用表格消息中的UserToUsename表中获取aspnet_Users

提前致谢

3 个答案:

答案 0 :(得分:2)

您需要使用不同的别名加入aspnet_Users表两次:

SELECT U1.Username as UserFrom,U2.Username as UserTo, M.Message
FROM Messages M JOIN
     aspnet_Users U1 ON U1.UserId=M.UserFrom JOIN
     aspnet_Users U2 ON U2.UserId=M.UserTo

<强>解释

这里aspnet_Users表连接两次,使用不同的别名U1,U2。每个用户名都从相应的表中获取。

答案 1 :(得分:1)

只需加入用户表两次。

SELECT
  t2.name AS userFrom,
  t3.name AS userTo,
  t1.Message
FROM messages t1
LEFT JOIN aspnet_Users t2 ON t1.UserFrom = t2.UserId
LEFT JOIN aspnet_Users t3 ON t1.UserTo = t3.UserId

答案 2 :(得分:1)

您需要使用用户数据连接两次表 - 对于每个涉及的用户一次:

select uf.username from_username, ut.username to_username, message
from messages m
join aspnet_Users uf on uf.id = userfrom
join aspnet_Users ut on ut.id = userto

此sql适用于您使用(或任何其他)标记问题的两个数据库。