Sql server 空值上的内部联接

Sql server 空值上的内部联接,sql-server,Sql Server,对于employee 2,并没有EmpAddressId,但这里需要显示为空值或空值。 任何人都能帮上忙。只需将内部连接替换为左侧连接(或左侧外部连接)。这将导致Address表中所有列的NULL,如果不匹配。此外,您还可以使用更简单的版本替换联接条件: TableName:Emp EmpId EmpName EmpAddressId 1 Ram 100 2 Ravi 3 Raj 102 4

对于employee 2,并没有EmpAddressId,但这里需要显示为空值或空值。
任何人都能帮上忙。

只需将
内部连接
替换为
左侧连接
(或
左侧外部连接
)。这将导致
Address
表中所有列的
NULL
,如果不匹配。此外,您还可以使用更简单的版本替换联接条件:

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

有关上的外部联接的详细信息。

如果联接表中的任何一个为null,则内部联接将屈服于null。。如果所有表都有值,则使用内部联接,否则使用左联接。它确保您将至少获得let联接表值

为此,您可以使用左连接

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

在这里,我需要的是单个员工,而不是所有员工。我是说EmpId作为输入参数。啊,好的,我把它加回去了。
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