内部加入空值

时间:2014-02-21 08:47:40

标签: sql-server

TableName:Emp
EmpId   EmpName EmpAddressId
1       Ram          100
2       Ravi            
3       Raj          102
4       Kiran        
5       Bujji        101


TableName:Address
AddressId   Address
101             India
102             Uk
103             US


select E.*,A.Address from EMP E inner join Address A 
on E.EmpId=2 and E.EmpAddressId='' or E.EmpAddressId=A.AddressId


out put should display as for EmpId:2
------------------------------
EmpId  EmpName EmpAddressId  Address
 2       Ravi      

for EmpId:3
------------
EmpId  EmpName EmpAddressId  Address
 3       Raj     102           Uk

对于员工2,没有EmpAddressId,但此处要求需要显示为空值或空值。 任何人都可以帮助这个。

2 个答案:

答案 0 :(得分:2)

只需将INNER JOIN替换为LEFT JOIN(或LEFT OUTER JOIN)即可。如果没有匹配,这将导致NULL表中所有列的Address。此外,您可以使用更简单的版本替换您的连接条件:

select E.EmpId, E.EmpName, E.EmpAddressId, A.Address
from EMP E left join Address A 
on E.EmpAddressId=A.AddressId
where E.EmpId=2

有关MSDN上外部联接的更多信息。

答案 1 :(得分:0)

如果任何连接表为null,则

内连接将产生null。如果所有表都有值,则使用内连接,否则输入左连接。它确保至少您将获得联接表值。

为此,您使用左连接

select e.EmpId, e.EmpName, e.EmpAddressId, a.Address

from EMP e left join Address a 

on e.EmpAddressId=a.AddressId

where e.EmpId=2