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

标签 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) 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/

相关文章:

mysql - max_allowed_pa​​cket=1024M... 它仍然给我错误 "Got a packet bigger than ' max_allowed_pa​​cket' bytes query...”

php - 在 SQL 中使用 PHP 变量

mysql - 如何远程连接到 NearlyFreeSpeech 托管的 MySQL 数据库?

MySQL 更新或重命名 JSON 中的键

mysql - solr 增量导入 "fetches"但不导入 "process"

python - SQL join、where、having 子句出现问题

mysql - 联合两个 SQL 查询

mysql - 为什么 SQL 返回太多结果?

php - 来自用户帐户数据库的自动电子邮件

PHP ->exec() 成功,但表中没有存储任何内容?