对不起我读了几个相同的问题,但仍然无法找到解决方案。
我有两张桌子
photo
表:
userID | photoID| score
users
表:
userID | totalScore
我想将photoID
唯一值传递给照片表(我的意思是我只想在查询中使用该值作为输入变量)。
然后在照片表中获取相应的userID
然后使用users表中生成的唯一userID
来更新totalScore
,例如
totalScore = totalScore + score
换句话说,我的价值观是
照片表:
userID | photoID| score
bob | 5 | 500
用户表:
userID | totalScore
bob | 5000
我希望在输入photoId=5
userID | totalScore
bob | 5500
希望我足够清楚。
___________________________ EDIT ________________________
这个人有所帮助。可能并非每个服务器都支持更新连接表示法。想分享答案 0 :(得分:2)
update users
set totalScore = totalScore + p.score
from users left join photo p on users.userId = p.userId
where p.photoID = 5
答案 1 :(得分:0)
以下是基于另一个表进行更新的方法,但您可能想要某种方法来确定它是否已经更新。
UPDATE users
SET totalScore = TotalScore+tphoto.score
FROM users tuser
INNER JOIN photo tphoto ON tuser.userid = tphotos.userid;
答案 2 :(得分: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。这样,如果你有两个鲍勃没有问题。
这是另一个可能提供进一步见解的similar question。
编辑:如果您只想更新bob,请将此添加到结尾
WHERE userId='bob'