我尝试将计算的列值复制到表格的正确列中,但在尝试第二次更新时,它不会识别计算的字段。
这是我的选择:
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
中。因为这个位置在更新时丢失了。所以我想根据返回的选择进行更新。
是否可以这样做?
答案 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