2011-10-25 72 views
11

我在SQL Server這樣的兩個SELECT語句:如何在兩個SELECT語句之間執行SQL Server中的LEFT JOIN?

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

我想執行一個留在[用戶名]屬性和[TailUser]屬性這兩個SELECT語句之間的連接。我想在第二個查詢中加入第一個查詢中相應的記錄和缺省記錄的NULL值中的現有記錄。我怎樣才能做到這一點?

回答

42
SELECT * FROM 
(SELECT [UserID] FROM [User]) a 
LEFT JOIN (SELECT [TailUser], [Weight] FROM [Edge] WHERE [HeadUser] = 5043) b 
ON a.UserId = b.TailUser 
1
select * 
from user 
left join edge 
on user.userid = edge.tailuser 
and edge.headuser = 5043 
+2

不要使用'WHERE',它取消'LEFT JOIN'。使用:'ON user.userid = edge.tailuser AND edge.headuser = 5043' –

+0

@ypercube啊,好抓!感謝您的糾正,它是固定的。 – 2011-10-25 14:11:05

1
SELECT [UserID] FROM [User] u LEFT JOIN (
SELECT [TailUser], [Weight] FROM [Edge] WHERE [HeadUser] = 5043) t on t.TailUser=u.USerID 
0

試試這個:不是WHERE

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

OR

AND edge.HeadUser=5043 

clausule。