使用相同的计算值更新同一查询中的两个字段

时间:2014-05-15 13:45:10

标签: mysql

我有以下查询来根据分数字段更新字段计算的排名表。

update `table` T1 set Rank=
(select count(*)+1 from (select * from `table` WHERE platform='asdf') T2 
WHERE T2.score > T1.score AND T2.platform='asdf') WHERE T1.platform='asdf'

但是,我想设置旧排名的差异字段,使用先前的排名来计算(rankDiff=rank - f)其中

f = ` (select count(*)+1 from (select * from `table` WHERE platform='asdf') T2 
    WHERE T2.score > T1.score AND T2.platform='asdf') WHERE T1.platform='asdf'`

有人知道我能做到这一点吗?我正在考虑用信息加入表格,但我无法通过计算计算得到JOIN ON部分(可能吗?)。

任何人都有任何想法如何做到这一点,而不是直接复制代码(这是一个选项,但不是一个选项!)。

1 个答案:

答案 0 :(得分:1)

这就是你想要实现的目标:

update `table` T1 set Rank=(select count(*)+1 from (select * from `table`
WHERE  platform='asdf') T2 
WHERE T2.score > T1.score AND T2.platform='asdf') WHERE T1.platform='asdf' as NewRankew), 
RankDiff=Rank-NewRank