2015-06-20 182 views
0

我试图将计算列值复制到我的表的正确列中,但尝试第二次更新时,它不能识别计算字段。MySQL更新行号

这是我的选择:

select @rownum:[email protected]+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。因为更新时位置丢失了。所以我想根据返回的选择进行更新。

有没有可能这样做?

+0

“Poule”表是否有主键? – Barmar

+0

是的,它被称为'Id' – neuzehie

回答

2

将表加入返回排名的查询中。

UPDATE Poule AS p1 
JOIN (select @rownum:[email protected]+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