SQL 联接返回行时 Where 不满足



我有一个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

相关内容

  • 没有找到相关文章

最新更新