SQL连接两个表

Lea*_*SQL -1 sql t-sql join auto-populating

我有2个表员工(id和名称)和薪水(id,薪水),第1行有4行,第2行有2行.

table 1            Table 2
id   Name         id    salary
1     Sue          1    10000 
2    Sarah         3     9000
3    Nick 
4    james 
Run Code Online (Sandbox Code Playgroud)

我想要一个如下连接

id   Name     Salary
1     Sue     10000
2    Sarah    No Salary
3    Nick     9000
4    james    No salary
Run Code Online (Sandbox Code Playgroud)

Mik*_*son 7

T1在连接到T2缺少第2行和第4行的表时获取所有行,您需要使用左外连接.对于第2行和第4行,工资将为null.

要用其他东西替换null值,可以使用coalesce.Coalesce返回第一个非空参数.

由于字段salary被声明为int字段,并且您希望No Salary在没有工资的情况下作为输出,因此在将其用作coalesce中的参数之前,需要其转换int为a varchar.

declare @T1 table(id int, name varchar(10))
declare @T2 table(id int, salary int)

insert into @T1 values(1, 'Sue')
insert into @T1 values(2, 'Sarah')
insert into @T1 values(3, 'Nick')
insert into @T1 values(4, 'james') 

insert into @T2 values(1, 10000)
insert into @T2 values(3, 9000)

select
  T1.id,
  T1.name,
  coalesce(cast(T2.salary as varchar(10)), 'No Salary') as salary 
from @T1 as T1
  left outer join @T2 as T2
    on T1.id = T2.id  
Run Code Online (Sandbox Code Playgroud)

结果

id          name       salary
----------- ---------- ----------
1           Sue        10000
2           Sarah      No Salary
3           Nick       9000
4           james      No Salary
Run Code Online (Sandbox Code Playgroud)