MySQL更新行号

时间:2015-06-20 21:10:29

标签: mysql

我尝试将计算的列值复制到表格的正确列中,但在尝试第二次更新时,它不会识别计算的字段。

这是我的选择:

select @rownum:=@rownum+1 Rank, p.* 
from Poule p, 
    (SELECT @rownum:=0) r 
WHERE p.Activity LIKE 'BallgameOne' 
order by TotalPoints desc

这会产生一个包含rownumber(rank)和Poule表的所有列的表。 Poule表中的其中一列称为Position

我想将列Rank的值复制到列Position中。因为这个位置在更新时丢失了。所以我想根据返回的选择进行更新。

是否可以这样做?

1 个答案:

答案 0 :(得分:2)

使用返回排名的查询加入表。

UPDATE Poule AS p1
JOIN (select @rownum:=@rownum+1 Rank, p.id
        from Poule p, 
            (SELECT @rownum:=0) r 
        WHERE p.Activity LIKE 'BallgameOne' 
        order by TotalPoints desc) AS p2
ON p1.id = p2.id
SET p1.Position = p2.Rank