首页
SQLServer
SQL表关联主外键查询,把不存在的数据以空值列出来
- 现有3张表,A表人员表,B表小组表,C表关系表(人员属于那个小组)
A表中数据:
PerId PerName
1 张三
2 王五
3 李四
等等
B表中数据
GroupId GroupName
1 小组1
2 小组2
3 小组3
等等
C表中数据
Id PerId GroupId
1 1 2
没了
想获得查询结果:
PerName GroupName
张三 小组2
王五 无小组
李四 无小组
- 解决方法:
- create table A(PerId int,PerName varchar(10))
insert into a values(1 ,'张三')
insert into a values(2 ,'王五')
insert into a values(3 ,'李四')
create table B(GroupId int,GroupName varchar(10))
insert into b values(1 ,'小组1')
insert into b values(2 ,'小组2')
insert into b values(3 ,'小组3')
create table C(Id int,PerId int,GroupId int)
insert into c values(1 ,1 ,2)
go
select a.PerName , isnull(b.GroupName,'无小组') GroupName
from a left join c on a.PerId = c.PerId
left join b on c.GroupId = b.GroupId
drop table a ,b , c
/*
PerName GroupName
---------- ----------
张三 小组2
王五 无小组
李四 无小组
(所影响的行数为 3 行)
*/