当不满意时,SQL连接返回行

Wil*_*ins 3 sql-server null join

我有一张桌子Monkeys和一张桌子,上面Trees有一对多关系,由第三张MonkeysTreesFK表加入.

我有这个查询返回给定树的所有猴子和树Id:

SELECT * 
FROM Monkeys m
JOIN MonkeysTrees mt ON mt.MonkeyId = m.Id
join Trees t ON t.Id=mt.TreeId
WHERE t.Id = 1;
Run Code Online (Sandbox Code Playgroud)

如果我t.Id将final WHERE子句更改Id为不在Trees表中的那个,我仍然希望返回一个包含所有Monkeys的表,但在连接的字段中为NULL.我怎么能这样做?

Mar*_*ith 5

您可以使用外部联接,下面的on子句的位置 Monkeys left join (MonkeysTrees inner join Trees where treeid = 1)

SELECT * 
FROM Monkeys m
LEFT JOIN MonkeysTrees mt
           INNER JOIN Trees t ON t.Id=mt.TreeId AND t.Id = 1
ON mt.MonkeyId = m.Id
Run Code Online (Sandbox Code Playgroud)