我有以下查询来更新一个表,其中字段计算为基于分数字段的排名。
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)
where
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 部分。
任何人都知道如何在不直接复制代码的情况下完成此操作(这是一种选择,但不是一个优雅的选择!)。
最佳答案
这是你想要达到的目标吗:
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
关于mysql - 使用相同的计算值更新同一查询中的两个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23680119/