当两个表没有相同的键时如何合并它们?

时间:2019-03-15 07:12:25

标签: 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中“计数”的总和,但是其中“已购买” = true,我想在特定日期后用tbl2中“ count”的总和更新该计数:'2018-03 -02'。

我尝试将左联接和case whens结合使用,但是由于tbl2没有精确匹配的'id'值,因此我的查询仅输出id = 1的计数值。

这里有帮助吗?预先感谢!

编辑:道歉,为了澄清这是MySQL,我不打算更新实际表。我只想提取tbl1的数据,并在该数据输出中更新计数数据。

2 个答案:

答案 0 :(得分:0)

您可以在下面尝试-

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'

答案 1 :(得分:0)

尝试一下,看看是否有效

从tbl1,tbl2中选择“ total_count”为从“ tbl1”中选择的count(id)为“ true”(从tbl2中选择其date> =“ 2018-03-03”的count(count))为“ total_count”;