您好我有一个sql查询,它为我的数据库生成排名
SET @rownum := 0;
SELECT
rank, Total, UserID_ChampID
FROM
(SELECT
@rownum := @rownum +1 AS rank, total, UserID_ChampID
FROM
Summoner_Champions
WHERE
Champion_ID = 0
ORDER BY
Total DESC) as result
这将返回一个正确的表,如
rank total userid_champid
1 379 566_0
我的问题是:我想更新表格,从
中提取这些数据所以我想要更新是这样的代码工作
UPDATE Summoner_Champions
SET Rank = result.rank
WHERE Summoner_Champions.UserID_ChampID = result.UserID_ChampID
很抱歉,如果这是一个完全新手的问题,但我找不到通过子查询或解决方法使代码工作的方法
答案 0 :(得分:0)
您可以使用SELECT
查询更新查询。见下文:
SET @rownum := 0;
UPDATE Summoner_Champions
SET
Rank = (SELECT rank FROM
(SELECT
@rownum := @rownum +1 AS rank, total, UserID_ChampID
FROM
Summoner_Champions
WHERE
Champion_ID = 0
ORDER BY
Total DESC) as result)
答案 1 :(得分:0)
我认为应该这样做:
UPDATE Summoner_Champions
SET Rank = result.rank
FROM Summoner_Champions sc LEFT INNER JOIN (your Statement for Result) result
WHERE Summoner_Champions.UserID_ChampID = result.UserID_ChampID
编辑: 第二种方法,请参阅我的上一条评论:
UPDATE Summoner_Champions
SET Rank = (@rownum + 1)
WHERE Champion_ID = 0