如何在 SQL Server 中的两个 SELECT 语句之间执行 LEFT JOIN?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/7890488/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to perform a LEFT JOIN in SQL Server between two SELECT statements?
提问by moorara
I have two SELECT statements in SQL Server like these:
我在 SQL Server 中有两个 SELECT 语句,如下所示:
(SELECT [UserID] FROM [User])
(SELECT [TailUser], [Weight] FROM [Edge] WHERE [HeadUser] = 5043)
I want to perform a LEFT JOIN between these two SELECT statements on [UserID] attribute and [TailUser] attribute. I want to join existent records in second query with the corresponding records in first query and NULL value for absent records. How can I do this?
我想在 [UserID] 属性和 [TailUser] 属性的这两个 SELECT 语句之间执行 LEFT JOIN。我想将第二个查询中的现有记录与第一个查询中的相应记录和缺失记录的 NULL 值连接起来。我怎样才能做到这一点?
回答by Derek Kromm
SELECT * FROM
(SELECT [UserID] FROM [User]) a
LEFT JOIN (SELECT [TailUser], [Weight] FROM [Edge] WHERE [HeadUser] = 5043) b
ON a.UserId = b.TailUser
回答by Icarus
SELECT [UserID] FROM [User] u LEFT JOIN (
SELECT [TailUser], [Weight] FROM [Edge] WHERE [HeadUser] = 5043) t on t.TailUser=u.USerID
回答by Icarus
select *
from user
left join edge
on user.userid = edge.tailuser
and edge.headuser = 5043
回答by deepcell
Try this:
尝试这个:
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
instead of WHERE clausule.
而不是 WHERE clausule。