如何从多个表中获取记录?

时间:2014-01-06 12:59:59

标签: sql sql-server sql-server-2008 join outer-join

您好我是数据库新手,我正在尝试从多个表中获取记录,但根据选择以下是我的表

 Table1

  Column1      Column2
    1             10
    2             25 
    3             23
    4             15
    5              7


  Table2

  Column1      Column2
    2             15 
    3             13
    5             17

  Table3

  Column1      Column2
    2             45

结果表应该有

之类的记录
       Column1      Column2
         1             10
         2             45
         3             13
         4             15
         5             17

我正在尝试但尚未得到输出。任何帮助或计算此输出的方向将是很有帮助的。


更新

我想要的是获取table1中的所有行,然后如果table2包含匹配的记录,那么它将从结果集中删除匹配的记录并添加table2匹配的记录,然后table3重复相同的记录。

3 个答案:

答案 0 :(得分:4)

SELECT t1.column1, COALESCE(t3.column2,t2.column2,t1.column2) 
FROM t1 
LEFT JOIN t2 on t1.column1=t2.column1
LEFT JOIN t3 on t1.column1=t3.column1

答案 1 :(得分:2)

请使用以下代码并尝试

select * from table1 where column1 not in  ( select column1 from table2 union select column1 from table3)
union 
select  * from table2 where column1 not in  (select column1 from table3)
union
select  * from table3

答案 2 :(得分:1)

select x.col1,max(x.col2) from (

select * from #t1
union
select * from #t2
union 
select * from #t3 
)x
group by x.col1

see it in action