2011-10-25 42 views
11

Tôi có hai câu lệnh SELECT trong SQL Server như thế này:Làm thế nào để thực hiện LEFT JOIN trong SQL Server giữa hai câu lệnh SELECT?

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

Tôi muốn thực hiện một LEFT JOIN giữa hai câu SELECT trên [UserID] thuộc tính và [TailUser] thuộc tính. Tôi muốn tham gia các bản ghi tồn tại trong truy vấn thứ hai với các bản ghi tương ứng trong truy vấn đầu tiên và giá trị NULL cho các bản ghi vắng mặt. Tôi có thể làm cái này như thế nào?

Trả lời

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

Không sử dụng 'WHERE', nó hủy bỏ' LEFT JOIN'. Sử dụng: 'ON user.userid = edge.tailuser AND edge.headuser = 5043' –

+0

@ypercube ah, bắt tốt! Cảm ơn bạn đã sửa, nó đã được sửa. –

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

Hãy thử điều này:

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

HOẶC

AND edge.HeadUser=5043 

thay vì ĐÂU clausule.

Các vấn đề liên quan