mysql - 合并并更新sql中的表

标签 mysql sql

表测试:

+--------+--------+-------+------+
| source | target | count | prob |
+--------+--------+-------+------+
| test1  | test2  |     2 |    1 |
| cat    | dog    |     2 |    1 |
+--------+--------+-------+------+

表测试2:

+--------+--------+-------+------+
| source | target | count | prob |
+--------+--------+-------+------+
| cat    | dog    |     1 |  0.5 |
| dog    | cat    |     1 |  0.5 |
+--------+--------+-------+------+

我试图通过代码组合两个表,但失败了

select test.count+test2.count, test.prob+test.prob 
from test, test2
where (test.source = test2.source) and (test.target = test2.target);

如果我想像这样更新测试表

+--------+--------+-------+------+
| source | target | count | prob |
+--------+--------+-------+------+
| test1  | test2  |     2 |    1 |
| cat    | dog    |     3 |   1.5|
| dog    | cat    |     1 |   0.5|
+--------+--------+-------+------+

有什么建议吗?

最佳答案

尝试 Union 与 group by 。

select source , target , SUM(`count`), SUM(prob )
(select * from test
Union 
select * from test2) as t
group by source,target

关于mysql - 合并并更新sql中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30476396/

相关文章:

mysql - 将多个结果分配给一个mysql变量

python - 使用 SQLAlchemy 批量更新子查询

sql - 如何选择多个连接表值满足选择条件的行?

sql - 如何按时间段(例如小时)选择每个用户的数量?

mysql - 查询需要很长时间才能执行

java - 如何在具有不同行的多对一关系字典表中?

php - 在简单的 Web 文档系统(或基本 CMS)上使用 RDBMS 与平面文件相比有什么真正的好处吗?

mysql - 对 Char 类型使用 Like 和 Concat

MySQL 计算相同间隔内的行数

mysql - `KILL QUERY`命令的目的是什么?