SQL查询从两个表中选择数据

时间:2012-11-29 07:32:27

标签: sql-server-2008 sql-server-2012

我有两张桌子,即

邀请

  • InvitationID
  • 用户ID
  • 电子邮件

用户

  • 用户ID
  • 用户名

我在两个表中都有数据

邀请表数据

29  NULL    test1@example.com   
40  8       test2@example.com                                                                       
41  8       test3@example.com     

用户表数据

8     someone@example.com

现在我想从Invitation表格中选择所有数据,并且还要从Username表中选择Users Invitation.InvitationID等于Users.UserID

我使用以下查询来选择数据

SELECT 
    Invitations.*, Users.UserName
FROM
    Invitations 
INNER JOIN
    Users ON Invitations.UserID = Users.UserID

但它只返回两行。我想从Invitation表中选择所有行。如果Invitation.UserIDnull,则Username也为null。我想要这样的输出:

 29  NULL   test1@example.com   Null
 40  8      test2@example.com   someone@example.com                                                                  
 41  8      test3@example.com   someone@example.com 

1 个答案:

答案 0 :(得分:4)

你必须使用左连接:

SELECT Invitations.*, Users.UserName
FROM     Invitations left JOIN
              Users ON Invitations.UserID = Users.UserID