主表记录: ID Name 1 AA 2 BB 3 CC子表记录: ID Name Rem 1 AA 100 3 CC 200================================= 查询需要得到的结果 ID Name Rem 1 AA 100 2 BB 3 CC 200查询字表所有的记录,但是如果在子表中有记录,则显示子表记录,没有则为空。 或者显示,在子表中有无记录也可以。ID Name Rem 1 AA 有 2 BB 无 3 CC 有
简单点的话,就是直接用左连接查询。select 主表.ID,主表.Name,isnull(子表.Rem,'') as Rem from 主表 left join 子表 on 主表.ID=子表.ID这样查出来的结果就是,如果子表的一个ID有多条记录的话,最终查询出来的结果也是多条的。
select a.*,b.Rem from 主表 a left join 子表 b on a.ID=b.ID
如果只是想知道主表对应的ID有没有在子表存在的话,可以这样写:select 主表.ID,主表.Name,isnull(#Temp.Rem,'无') as Rem from 主表 left join ( select distinct ID,'有' as Rem from 子表 ) #Temp on 主表.ID=#Temp.ID
--问题1 select a.ID,a.Name,b.Rem from [主表] a left join [子表] b on a.ID = b.ID --问题2 select a.ID,a.Name,case when b.Rem is not null then '有' else '无' end as Rem from [主表] a left join [子表] b on a.ID = b.ID
from 主表
left join 子表 on 主表.ID=子表.ID这样查出来的结果就是,如果子表的一个ID有多条记录的话,最终查询出来的结果也是多条的。
from 主表 a left join 子表 b on a.ID=b.ID
from 主表
left join
(
select distinct ID,'有' as Rem from 子表
) #Temp
on 主表.ID=#Temp.ID
--问题1
select a.ID,a.Name,b.Rem
from [主表] a left join [子表] b on a.ID = b.ID
--问题2
select a.ID,a.Name,case when b.Rem is not null then '有' else '无' end as Rem
from [主表] a left join [子表] b on a.ID = b.ID