如何将2个临时表一起添加

时间:2010-07-13 20:40:08

标签: sql mysql temp-tables

如果我正在创建临时表,那么它有2列。 idscore。我想将它们加在一起。

我想添加它们的方式是,如果它们各自包含相同的id,那么我不想复制id,而是将分数加在一起。

如果我有2个名为t1t2

的临时表

t1

id 3 score 4
id 6 score 7

t2

id 3 score 5
id 5 score 2

我最终得到一个新的临时表,其中包含:

id 3 score 9
id 5 score 2
id 6 score 7

我想这样做的原因是,我正在尝试构建产品搜索。我有一些我想要使用的算法,1使用全文而不是。我想使用这两种算法,所以我想创建一个基于algorithm1的临时表和一个基于algorithm2的临时表。然后结合它们。

6 个答案:

答案 0 :(得分:6)

怎么样:

SELECT id, SUM(score) AS score FROM (
  SELECT id, score FROM t1
  UNION ALL
  SELECT id, score FROM t2
) t3
GROUP BY id

答案 1 :(得分:2)

这是未经测试但您应该能够在两个表上执行联合,然后对结果执行选择,对字段进行分组并添加分数

SELECT id,SUM(score) FROM
(
    SELECT id,score FROM t1
    UNION ALL
    SELECT id,score FROM t2
) joined
GROUP BY id

答案 2 :(得分:1)

在ID上执行完全外部联接。将值合并为0后,选择ID和两个“得分”列的总和。

答案 3 :(得分:1)

select id, sum(score)
from (
 select * from table 1
 union all
 select * from table2
) tables
group by id

答案 4 :(得分:1)

SELECT id, SUM(score) FROM
(
    SELECT id, score FROM #t1
    UNION ALL
    SELECT id, score FROM #t2
) AS Temp
GROUP BY id

答案 5 :(得分:0)

您需要创建这两个表的并集,然后您可以轻松地对结果进行分组。

SELECT id, sum(score) FROM 

(
 SELECT id, score FROM t1
 UNION 
 SELECT id, score FROM t2
) as tmp
GROUP BY id;