我的问题是,我试图计算所有用户条目,然后排行。在我排行它们之后,我想更新用户表,记录每个用户的排行。
表:
用户Tbl
活动图示
我已经找了整晚了 这是我目前为止有的
SET @rank := 0;
SELECT * FROM (
SELECT @rank := @rank + 1 AS rank, a.userName
FROM 活动图示 a
LEFT JOIN 用户Tbl u ON a.userName = u.userName
GROUP BY a.userName
ORDER BY SUM( TIME_TO_SEC( a.actTime ) )DESC
) as sub
此返回 :
用户级别@ user
1 Kim 1 Kim
2 约翰·约翰·约翰
3 Joe 3 Joe( 3 Joe)
This is fine, but I ve tried to add Update and Set to this query to update the 用户Tbl and I just can t get it to work.
需要更多信息请告诉我
更新:
对于那些寻找 准确什么 我做了纠正我的问题。
首先,我贴错了 MySQL。 我用来解决我问题的一个是:
SET @rownum := 0;
SELECT @rownum := @rownum + 1 AS rank, userName, actTimeTotal
FROM (SELECT SUM(TIME_TO_SEC(actTime)) AS actTimeTotal , userName
FROM 活动图示
GROUP BY userName
ORDER BY actTimeTotal DESC) as result
第二,我创建了一个名为排名Tbl的排名表,有两个栏:小Int和用户Name varchar。
第三,修改 MySql 脚本为 :
SET @rownum := 0;
INSERT INTO rankTbl( rank, userName)
SELECT @rownum := @rownum + 1 AS rank, userName
FROM (SELECT SUM(TIME_TO_SEC(actTime))AS actTimeTotal , userName
FROM 活动图示
GROUP BY userName
ORDER BY actTimeTotal DESC) as result
ON DUPLICATE KEY UPDATE userName = VALUES(userName);
我将 On DUPIATE KEY 更新为用户名, 而不是级别。 当级别改变时, 级别没有更新用户名 。 使用用户名更新级别变化 。