提问者:小点点

在JOIN语句上使用ORDER BY和LIMIT的MYSQL更新查询


我正在尝试做一个更新查询,它将对5个用户的rewards_balance按购买日期排序求和。

用户表为:

id     rewards_balance
1      0
2      20
3      0
4      23
5      11
6      45
7      1
8      0
9      0 
10     10

这是我的订阅

payer_id     created
1           1616137161
2           1616137165
5           1616137166
7           1616137167
3           1616137168
4           1616137169
9           1616137175

更新查询应该以这样的方式工作,它将添加一个设置的数量到5个用户谁已经有了订阅在先。因此更新后的输出应该如下所示

id     rewards_balance
1      0+20
2      20+20
3      0+20
4      23
5      11+20
6      45
7      1+20
8      0
9      0 
10     10

因此,如您所见,这20只添加到那些首先订阅的ID中。

到目前为止我所尝试的是:

UPDATE users u LEFT JOIN subscription m ON u.id = m.payer_id SET u.rewards_balance = u.rewards_balance+20
ORDER BY `m`.`created` ASC LIMIT 10

我一直得到以下错误。

查询错误:UPDATE和ORDER By的用法不正确

请协助。


共1个答案

匿名用户

多表更新中不允许使用Order ByLimit。请参阅文档。