日期:2014-05-16  浏览次数:20392 次

求大神解惑二个语句的区别在哪


select a.FAPTime as RTime,a.FAPJobTitle as RTitle,b.RealName as RUser,b.DeptName as RDept,'已处理出国旅游探亲' as RKind ,'../ForeignAffairs/ForeignAffairs_Private_Info.aspx?Type='+cast((case a.FAPState When 0  then 0 when  1 then 1 when 2 then 0 else 2 end) as varchar)+'&FAPID='+cast(a.FAPID as varchar(50))+'&PType=3' as RUrl from 
 ForeignAffairs_Private a left join UserDeptInfo b on a.UserID=b.UserID
where
 1=1 and exists (select * from  ForeignAffairs_Private_Process_User_Recorder c where c.SheetID = a.FAPID and c.SPURUserid = 1)


select a.FAPTime as RTime,a.FAPJobTitle as RTitle,c.RealName as RUser,c.DeptName as RDept,'已处理出国旅游探亲' as RKind , 
'../ForeignAffairs/ForeignAffairs_Private_Info.aspx?Type='+cast((case a.FAPState When 0  then 0 when  1 then 1 when 2 then 0 else 2 end) as varchar)+'&FAPID='+cast(a.FAPID as varchar(50))+'&PType=3' as RUrl from ForeignAffairs_Private a left join ForeignAffairs_Private_Process_User_Recorder b on a.FAPID = b.SheetID left join UserDeptInfo c on c.UserID =  a.UserID
where b.SPURUserid = 1

如题,上面的查询结果有2个重复的  下面的查询结果只有一个

为什么会造成这种结果呢 ,它们之间到底有何区别?
------解决方案--------------------
说反了,
2是,a 左联b左联c。
1相当于,a左联UserDeptInfo,但 内联 ForeignAffairs_Private_Process_User_Recorder

exists 相当于 inner join 
------解决方案--------------------

第一个语句是a先left join b,但a和c是内联的

而第二个语句是a左联b,然后再左联c

这两个语句,根据数据的关系,可能会有不同的结果,第一个语句的结果集会少,而第二个语句的结果集会多,而且第二个结果集也会有数据重复的问题