在查询中多次使用存储的sql表

时间:2015-02-16 08:34:49

标签: sql database

您好我有一个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

很抱歉,如果这是一个完全新手的问题,但我找不到通过子查询或解决方法使代码工作的方法

2 个答案:

答案 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