有任何 MySQL 查询来更新/替换 Group By 表点到其他 MySQL 表

Posted

技术标签:

【中文标题】有任何 MySQL 查询来更新/替换 Group By 表点到其他 MySQL 表【英文标题】:Have any MySQL query to Update/replace Group By table points into other MySQL Table 【发布时间】:2021-05-19 10:07:14 【问题描述】:

我使用以下查询过滤我的(TableA - 字段 app_id、user_id、points、tr_type、description

select app_id, user_id,sum(case when tr_type = 'add' then points when tr_type = 'sub' then - points end) as points
from TableA
group by app_id, user_id;

结果:

app_id  user_id  points
1          1a      10
1          1b      12
1          1c      3

现在我有另一个表(TableB)

app_id   user_id   points  desc
1          1a      0       text
1          1b      0       tet
1          1c      0       txt

现在我需要快速替换查询来更新 TableB 点值,它是来自 TableA 的 groupby

【问题讨论】:

如果您可以查询一个数字,最好这样做,而不是将总数保存在表格中,因为它们几乎总是错误的。某个地方的某个人会快速修复数据库并忘记维护总数 【参考方案1】:

您可以使用带有 subqiery 的内连接来按值分组

update tableB b
INNER JOIN (
    select app_id
        , user_id
        ,sum(case when tr_type = 'add' then points when tr_type = 'sub' then - points end) as points
    from TableA
    group by app_id, user_id

) t ON t.app_id = b.app_id
    AND t.user_id = b.user_id 
set b.points = t.points 

【讨论】:

以上是关于有任何 MySQL 查询来更新/替换 Group By 表点到其他 MySQL 表的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 之间使用替换

如何在 MySQL 中运行更新查询并替换匹配的字符串

Group BY 子查询返回多于 1 行

如何更新我的查询以符合 sql_mode=only_full_group_by 启用? [复制]

MySQL GROUP BY ...具有不同的值相同的字段

解析mysql中:单表distinct多表group by查询去除重复记录