首页
  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 行)
 */