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,但此处要求需要显示为空值或空值。 任何人都可以帮助这个。
答案 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。如果所有表都有值,则使用内连接,否则输入左连接。它确保至少您将获得联接表值。
为此,您使用左连接
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