如何根据另一个表的记录计数更新sql表?

dxpyg8gm  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(301)

我有两个名为 Share 以及 Balance . users 是两个表中的公共列。中的每个用户都有多个行/共享 Share table。
我需要做的是更新 paid 列自 Share 通过在每个共享上添加1,添加的计数不需要添加到表中 balanceBalance table。例如,一个用户在 Share 如果我为每一份加上+1 balanceBalance 表需要用现有余额加3。
我已经写了下面的sql语句。它正在更新 Share 相应地,但是 Balance 表更新错误。见下图:

Update Share Set paid=paid + 1
Update Balance Set balance=balance + S.Paid
From balance B,share S Where B.users=S.users
ippsafx7

ippsafx71#

Update Share Set paid=paid + 1
Update Balance Set balance=balance + (select count(S.Paid) From balance B,share S 
                                     Where B.users=S.users
                                     group by s.users )
From balance B,share S Where B.users=S.users

--If increment is always +1 in share table then this query will work fine.
fdbelqdn

fdbelqdn2#

你可以选择两个。
为了便于阅读,最好使用显式连接sintax
如果使用alias,则应在所有列名称中使用表别名

Update Share 
Set paid=paid + 1;

Update Balance B
INNER JOIN (
  select users, count(*) an num_count
  from share
  group by user
  ) t on t.users = B.users
Set B.balance=B.balance + t.num_count;

相关问题