如果我正在创建临时表,那么它有2列。 id
和score
。我想将它们加在一起。
我想添加它们的方式是,如果它们各自包含相同的id
,那么我不想复制id
,而是将分数加在一起。
如果我有2个名为t1
和t2
和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的临时表。然后结合它们。
答案 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;