2013-04-11 116 views
0

對不起;我讀了幾個相同的問題,但仍無法找出解決方案。更新一個表從另一個表在SQL中使用的數據

我有兩個表

photo表:

userID | photoID| score 

users表:

userID | totalScore 

我想通過photoID獨特價值的照片表(我的意思是我想用只有該值作爲查詢中的輸入變量)。

然後得到相應的照片表

然後使用所產生的獨特userID users表中的更新totalScore

totalScore = totalScore + score 

換句話說可以說,我的價值觀是userID

照片表:

userID | photoID| score 
bob | 5 | 500 

用戶表:

userID | totalScore 
bob | 5000 

我希望用戶表看起來像一個查詢後,我很清楚photoId=5

userID | totalScore 
bob | 5500 

希望的輸入。

太謝謝你了!

阿爾達

___________________________EDIT________________________

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

這一個幫助。有可能不是每個服務器都支持update-join標記。想分享

感謝大家!

回答

2
update users 
set totalScore = totalScore + p.score 
from users left join photo p on users.userId = p.userId 
where p.photoID = 5 
+0

這看起來像我想要什麼,但我有語法錯誤。我會嘗試修復 – ardavar 2013-04-12 00:50:58

+0

我覺得這部分 更新用戶 集totalScore = totalScore + p.score 作祟至今(我可以使用SELECT合作的其他部分) – ardavar 2013-04-12 01:00:06

0

這裏是如何更新基於另一個表,但你會probally想一些方法來確定它是否已經更新與否。

UPDATE users 
SET totalScore = TotalScore+tphoto.score 
FROM users tuser 
INNER JOIN photo tphoto ON tuser.userid = tphotos.userid; 
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 

我沒有一臺運行,對。我建議使用sequel pro或其他工具,可以給錯誤信息,如果你有mysql的語法問題。我還建議您使用自動遞增整數作爲您在兩個表之間映射時使用的鍵。每個用戶應該有一個唯一的整數ID。這樣,如果你有兩個鮑勃,沒有問題。

這是另一個similar question,可能提供進一步的洞察力。

編輯:如果你只是想更新鮑勃它添加到年底

WHERE userId='bob' 
相關問題