0

打扰一下; 我读了几个相同的问题,但仍然无法找出解决方案。

我有两张桌子

photo桌子:

userID | photoID| score

users桌子:

userID | totalScore

我想将photoID唯一值传递给照片表(我的意思是我只想将该值用作查询中的输入变量)。

然后userID在照片表中获取对应

然后使用userID用户表中生成的唯一性进行更新totalScore,例如

totalScore = totalScore + score

换句话说,可以说我的价值观是

照片表:

userID | photoID| score
bob    |    5   | 500

用户表:

userID | totalScore
bob    |    5000

我希望用户表在输入查询后看起来像photoId=5

userID | totalScore
bob    |    5500

希望我足够清楚。

___________________________编辑________________________

https://stackoverflow.com/a/707668/842644

这个有帮助。可能不是每个服务器都支持更新连接表示法。想分享

4

3 回答 3

2
update users 
set totalScore = totalScore + p.score
from users left join photo p on users.userId = p.userId
where p.photoID = 5
于 2013-04-11T20:46:52.127 回答
0

以下是如何根据另一个表进行更新,但您可能需要某种方式来确定它是否已经更新。

UPDATE users
SET totalScore = TotalScore+tphoto.score
FROM users tuser
INNER JOIN photo tphoto ON tuser.userid = tphotos.userid;
于 2013-04-11T20:48:30.140 回答
0

假设总分应该是照片表中所有用户点的总和

UPDATE users 
INNER JOIN 
    (SELECT userID, SUM(photo) as 'total' FROM photo GROUP BY userID) 
    x ON x.userID=users.userID 
SET users.totalScore=x.total

我没有桌子可以与之对抗。如果您有 mysql 语法问题,我建议使用sequel pro或其他可以提供错误消息的工具。我还建议您使用自动递增整数作为用于在 2 个表之间映射的键。每个用户都应该有一个唯一的整数 id。这样,如果您有两个鲍勃,就没有问题。

这是另一个类似的问题,可能会提供进一步的见解。

编辑:如果您只想更新 bob,请将其添加到末尾

WHERE userId='bob' 
于 2013-04-11T20:55:44.907 回答