Mysql中的嵌套查询更新?

Duc*_*tal 0 mysql sql

我有以下查询:

SELECT `peers`.uid, `user`.userid FROM `peers`, `user` WHERE `user`.userid = `peers`.uid
Run Code Online (Sandbox Code Playgroud)

FF。是查询的结果

userid,uid
1,1
1,1
1,1
3,3
96,96
96,96
Run Code Online (Sandbox Code Playgroud)

为了更新结果,我有 ff 查询设置:

UPDATE `user`
   INNER JOIN (    
   SELECT `peers`.uid, `user`.userid FROM `peers`, `user` WHERE `user`.userid = `peers`.uid
       ) AS my_current_select ON `user`.userid = my_current_select.userid
   SET `user`.credits = `user`.credits + 0.25
Run Code Online (Sandbox Code Playgroud)

但是更新查询只更新3次,每次加一次0.25积分变成userID 1,3,96

这不是我想要的。我想在查询的每一行结果中唯一地添加 0.25 个学分。
例如:

UID 1: UID1.credit = UID1.credit + 0.25 * 3 
UID 3: UID3.credit = UID3.credit + 0.25 * 1 
UID 3: UID96.credit = UID96.credit + 0.25 * 2
Run Code Online (Sandbox Code Playgroud)

我怎样才能达到这个结果?

mat*_*fee 5

也许将您的内部查询更改为:

SELECT `user`.userid, COUNT(`peers`.uid) as count 
FROM `peers`, `user` 
WHERE `user`.userid = `peers`.uid 
GROUP BY `user`.userid
Run Code Online (Sandbox Code Playgroud)

要得到:

userid,count
1,3
3,1
96,2
Run Code Online (Sandbox Code Playgroud)

然后在您的主查询中执行以下操作:

UPDATE `user`
   INNER JOIN (    
   SELECT `user`.userid, COUNT(`peers`.uid) as count 
    FROM `peers`, `user` 
    WHERE `user`.userid = `peers`.uid 
    GROUP BY `user`.userid
       ) AS my_current_select ON `user`.userid = my_current_select.userid
   SET `user`.credits = `user`.credits + 0.25*my_current_select.count
Run Code Online (Sandbox Code Playgroud)