如何将单个数据库调用中两个表的数据合并到相同的列中?

时间:2009-03-16 02:26:35

标签: sql merge

如果我批量运行这两个语句,它们会将一个表返回到我的sqlcommand对象,并将数据合并。我要做的是通过搜索两次来优化搜索,第一次在一组数据上,然后在另一组数据上。它们具有相同的字段,我希望两个表中的所有记录都显示并相互添加。我需要这个,以便我可以在两组数据之间对数据进行排序,但是没有编写存储过程,我想不出这样做的方法。

EG。表1包含列A和B,表2具有相同的列但具有不同的数据源。然后我想合并它们,这样如果一个列只存在于一个列中,它就被添加到结果集中,如果它们都存在,那么列B将在两个列之间求和。

请注意,这与完全外连接操作不同,因为它不会合并数据。

[编辑]

这是代码的样子:

Select * From
 (Select ID,COUNT(*) AS Count From [Table1]) as T1
     full outer join
 (Select ID,COUNT(*) AS Count From [Table2]) as T2
     on t1.ID = T2.ID

5 个答案:

答案 0 :(得分:2)

也许您正在寻找UNION?

IE:

SELECT A, B FROM Table1
UNION
SELECT A, B FROM Table2

答案 1 :(得分:1)

可能:

select table1.a, table1.b
from table1
where table1.a not in (select a from table2)
union all
select table1.a, table1.b+table2.b as b
from table1
inner join table2 on table1.a = table2.a

编辑:也许你会在计算之前联合表中受益。 e.g。

select id, count() as count from
(select id from table1
 union all
 select id from table2)

答案 2 :(得分:0)

我不确定我是否完全理解但你似乎在问一个UNION

SELECT A,B
FROM tableX
UNION ALL
SELECT A,B
FROM tableY

答案 3 :(得分:0)

要做到这一点,你会去:

SELECT * INTO TABLE3 FROM TABLE1
UNION
SELECT * FROM TABLE2

如果两个表都具有相同的列

答案 4 :(得分:0)

我认为你在寻找的是这个,但我不确定我是否正确理解你的语言。

select id, sum(count) as count
from (
    select id, count() as count
    from table1
    union all
    select id, count() as count
    from table2
) a
group by id