mysql - 当两个表没有相同的键时合并数据?

标签 mysql sql

这是我正在谈论的数据的示例:

tbl1                                      tbl2
====================================     ====================================  
| id | id_name | purchased | count |     | id | date                | count |
====================================     ====================================
|  1 |  id1    | true      | 100   |     |  1 | 2019-03-01 00:00:00 | 50    |
|  2 |  id2    | false     | 40    |     |  1 | 2018-03-02 00:00:00 | 30    |
|  3 |  id3    | false     | 60    |     |  1 | 2018-03-03 00:00:00 | 25    |
|  4 |  id4    | false     | 100   |     ====================================
====================================

基本上,我试图获取 tbl1 中“count”的总和,但在“purchased”= true 的情况下,我想在特定日期之后用 tbl2 中“count”的总和更新该计数:“2018-03” -02'。

我尝试将左连接和 case whens 结合起来,但由于 tbl2 没有精确匹配的“id”值,因此我的查询仅输出 id = 1 的计数值。

这里有什么帮助吗?提前致谢!

编辑:抱歉,澄清一下这是 MySQL,我并不是在尝试更新实际的表。我只想提取 tbl1 的数据并在该数据输出中更新计数数据。

最佳答案

您可以尝试以下 -

update t tbl2
join select id,sum(`count`) as totalcnt from tbl1 where purchased=true group by id)t1 
on t.id=t1.id 
set t.`count`=totalcnt
where date>'2018-03-02'

关于mysql - 当两个表没有相同的键时合并数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55177374/

相关文章:

mysql - 使用 group by 时按日期时间排序的 SQL

php - 计数列值按出现次数排序

mysql - 选择 sql 中的查询并在每一行上进行测试

sql - 通过滚动窗口分区计算不同的客户

php - MySQL 双阶

php - 将多行数据插入多列数据库表

sql - 构建 INSERT 语句值的动态列表

java - IS NULL 条件下的 JDBC 错误

Android与Python通信

MySQL EXISTS 和 ORDER BY