我有一张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;
如果我将最终t.Id
子句中的WHERE
更改为不在Trees表中的Id
,我仍然希望返回包含所有Monkeys的表,但在连接的字段中为NULL。我怎么能这样做?
答案 0 :(得分: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