左连接未按预期工作
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 data
,parentID column
和 Id=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。
我在 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 data
,parentID column
和 Id=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。