我有一个Monkeys
表和一个Trees
表,其多对多关系由第三个MonkeysTrees
FK表连接。
我有这个查询,它返回给定树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;
如果我将最终 WHERE
子句中的t.Id
更改为不在 Trees 表中的Id
,我仍然想返回一个包含所有猴子的表,但在连接的字段中使用 NULL。我该怎么做?
您可以使用外连接,下面 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