2017-10-09 55 views
0

主表:Select * from Table1如何获得只有从三个表的匹配数据

Id Name1 Name2 

101 ttt sss 

二表:Select * from Table2

SId Id Colum1 Column2 Column3 

1 101 hhh  xxx erre 

2 101 wsa  tgf  fdfd 

三表:Select * from Table3

TId Id TColumn1 Tcolumn2 

5 101 uyt  uyu 

我的查询:

Select * from Table1 t1 
Join Table2 t2 on t2.Id= t1.Id 
Join Table3 t3 on t3.Id= t1.Id 

我喜欢这个

Id Colum1 Column2 Column3 TColumn1 Tcolumn2 

1 hhh  xxx erre  uyt   uyu 

2 wsa  tgf  fdfd  uyt   uyu 

geeting数据我想是我的数据

Id Colum1 Column2 Column3 TColumn1 Tcolumn2 

1 hhh  xxx erre  uyt   uyu 

2 wsa  tgf fdfd  null   null 
+0

DId你已经尝试使用“左外连接”而不是“连接”? – Tyron78

+0

规则是 - 除了第一行之外,总是有NULL的? – DhruvJoshi

回答

1

的你可以用下面的查询

; with cte as 
    (
    Select 
    Colum1, 
    Column2, 
    Column3, 
    TColumn1, 
    Tcolumn2, 
    row_number() over(partition by t2.id order by SId asc) r 
    from Table1 t1 
    Join Table2 t2 on t2.Id= t1.Id 
    Join Table3 t3 on t3.Id= t1.Id 
    ) 

Select 
Colum1, 
Column2, 
Column3, 
TColumn1 =case when r=1 then TColumn1 else NULL end, 
Tcolumn2 =case when r=1 then Tcolumn2 else NULL end 
from cte 

See working demo

相关问题