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

Asked
Viewd29175

0

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

例如。表1具有A和B列,表2具有相同的列,但数据源不同。然后,我希望将它们合并,以便如果一个列中仅存在一个列,则将其添加到结果集中;如果两个列中都存在,则将其列在表中。

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

[编辑]

代码如下:

 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 个答案

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
 

编辑:也许您会受益于在计数之前 合并表。例如

 select id, count() as count from
(select id from table1
 union all
 select id from table2)
 
  • 尽管第二种方法仅应使用并集而不是全部并集,因为它会丢失某些高温数据。

    MiddletoneMarch 16, 2009 02:42
  • 两种方法都不错。我已经做了第二个,但是我很欣赏这个示例)我在第二个之前进行了分组,并对两列求和。就像魅力一样。

    MiddletoneMarch 16, 2009 02:41
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
 
2

也许您在寻找UNION?

IE:

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

我不确定我是否完全理解,但是您似乎在询问有关UNION的信息

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

要做到这一点,你会去:

 SELECT * INTO TABLE3 FROM TABLE1
UNION
SELECT * FROM TABLE2
 

提供的两个表都具有相同的列