【问题标题】:How to perform a LEFT JOIN in SQL Server between two SELECT statements?如何在两个 SELECT 语句之间在 SQL Server 中执行 LEFT JOIN?
【发布时间】:2011-12-14 23:38:17
【问题描述】:

我在 SQL Server 中有两个 SELECT 语句,如下所示:

(SELECT [UserID] FROM [User])
(SELECT [TailUser], [Weight] FROM [Edge] WHERE [HeadUser] = 5043)

我想在 [UserID] 属性和 [TailUser] 属性的这两个 SELECT 语句之间执行 LEFT JOIN。我想将第二个查询中的现有记录与第一个查询中的相应记录和缺失记录的 NULL 值连接起来。我该怎么做?

【问题讨论】:

  • 这个问题应该重新打开,因为左连接两个选择语句是一项一般和具体的任务; “这个问题不太可能帮助任何未来的访问者”的评论是错误的,因为它帮助了我。

标签: sql sql-server-2008 relational-database


【解决方案1】:

试试这个:

SELECT user.userID, edge.TailUser, edge.Weight 
FROM user
LEFT JOIN edge ON edge.HeadUser = User.UserID
WHERE edge.HeadUser=5043

AND edge.HeadUser=5043

而不是 WHERE 子句。

【讨论】:

    【解决方案2】:
    select *
    from user
    left join edge
    on user.userid = edge.tailuser
    and edge.headuser = 5043
    

    【讨论】:

      【解决方案3】:
      SELECT * FROM 
      (SELECT [UserID] FROM [User]) a
      LEFT JOIN (SELECT [TailUser], [Weight] FROM [Edge] WHERE [HeadUser] = 5043) b
      ON a.UserId = b.TailUser
      

      【讨论】:

        【解决方案4】:
        SELECT [UserID] FROM [User] u LEFT JOIN (
        SELECT [TailUser], [Weight] FROM [Edge] WHERE [HeadUser] = 5043) t on t.TailUser=u.USerID
        

        【讨论】:

          猜你喜欢
          • 2014-10-18
          • 2010-09-27
          • 2010-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-14
          相关资源
          最近更新 更多