左连接未按预期工作

时间:2015-11-14 05:44:23

标签: sql-server-2012 left-join

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

查询

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

菜单表

enter image description here

MenuRole表

enter image description here

查询输出

enter image description here

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

2 个答案:

答案 0 :(得分:2)

这是由where子句引起的,当strre不匹配时,DesignationId为null,因此DesignationId = 1不为真。

试试这个:

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

答案 1 :(得分:0)

假设MenuRole是您的“员工”数据,那么您的问题是m。*选择列表。 MenuRole别名是先生。尝试选择*或选择m。,先生,尽管最好只检索所需的字段。

我猜你的WHID子句筛选出你的ParentID = 0的角色,尽管有些测试是有保证的。它在MenuRole数据的可见部分中没有匹配,因此mr.DesignationID将为null,假设它确实不存在。