我有以下查询来根据分数字段更新字段计算的排名表。
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部分(可能吗?)。
任何人都有任何想法如何做到这一点,而不是直接复制代码(这是一个选项,但不是一个选项!)。
答案 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