我有以下查询:
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)
我怎样才能达到这个结果?
也许将您的内部查询更改为:
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)
| 归档时间: |
|
| 查看次数: |
6363 次 |
| 最近记录: |