左连接未按预期工作

Left join not working as expected

我在 query.But 中使用了一个简单的 Left Join 问题查询没有按预期工作。

查询是

select m.* from Menu m
left join MenuRole mr on m.Id=mr.MenuID
where mr.DesignationID=1 

菜单 Table

菜单角色Table

查询输出

问题是结果中缺少 Employee dataparentID columnId=0 也丢失。

这是由 where 子句引起的,当没有匹配项时,DesignationId 为空,因此 DesignationId = 1 不正确。

试试这个:

select m.* from Menu m
left join MenuRole mr on m.Id=mr.MenuID and mr.DesignationID=1 

假设 MenuRole 是您的 "Employee" 数据,那么您的问题是 m.* select 列表。 MenuRole 别名是 mr.尝试 select * 或 select m., mr.,尽管人们认为只检索所需的字段更好。

我猜你的 ParentID = 0 的角色被你的 WHERE 子句屏蔽掉了,尽管一些测试是必要的。它在 MenuRole 数据的可见部分没有匹配项,因此假设它确实不存在,mr.DesignationID 将为 null。