sql join在两列上

时间:2011-06-23 19:49:55

标签: sql subquery inner-join

我有两张表格如下:

用户

  • ID
  • 用户名
  • 电子邮件

消息

  • ID
  • 消息
  • FROMUSER
  • TOUSER

FROMUSERTOUSER在“用户”表中具有对ID的外键引用。

现在,我想检索使用用户电子邮件地址对用户进行加入的消息,如下所示

| ID | Message | FROMEMAIL | TOEMAIL |

我可以写一个如下查询。

SELECT Step1.*, 
       users.email as ToUser 
  FROM (SELECT messages.*, 
               users.email as fromuser 
          FROM messages 
          JOIN users on messages.fromuser = users.ID) as Step1 
  JOIN users on step1.touser = users.ID

有没有简单的方法我可以在没有子查询的情况下实现这个目标?

1 个答案:

答案 0 :(得分:12)

只需加入Users表两次:

SELECT Message, uf.Email AS FromEmail, ut.Email AS ToEmail
FROM Messages
JOIN Users uf ON Messages.FromUser = uf.Id
JOIN Users ut ON Messages.ToUser = ut.Id