sql - 根据排名更新 SQL 数据库列
问题描述
我正在开发一个程序,其中一个方面是根据每个玩家的 ELO 分数对他们进行排名。我已经能够创建一个可以提供排名作为输出的 SQL 查询,但我无法弄清楚如何让它真正更新数据库表。我目前正在使用 SQLite
当前代码:
SELECT
name,
elo,
losses,
matches,
RANK() OVER(ORDER BY elo DESC)
FROM membersData
{ ] 2
任何帮助将不胜感激
解决方案
假设名字是unique
,这样我们就可以加入
UPDATE membersData m1
INNER JOIN (
SELECT
name,
RANK() OVER(ORDER BY elo DESC) newrank FROM membersData) m2 ON m1.name = m2.name
SET m1.rank = m2.newrank
架构(SQLite v3.30)
CREATE TABLE membersData(
name TEXT ,
elo DOUBLE,
wins INTEGER,
losses INTEGER,
matches INTEGER,
ranking INTEGER
);
INSERT INTO membersData (
ranking,
matches,
losses,
wins,
elo,
name
)
VALUES (
NULL,
4,
3,
1,
123123,
'James'
),
(
NULL,
5,
4,
1,
123,
'Top'
),
(
NULL,
5,
2,
3,
1000,
'harry'
),
(
NULL,
5,
0,
5,
450,
'kai'
);
查询 #1
UPDATE membersData
SET ranking = (SELECT COUNT(*) + 1
FROM membersData md2
WHERE md2.elo > membersData.elo
);
没有要显示的结果。
查询 #2
SELECT * FROM membersData ORDEr BY ranking;
姓名 | 埃洛 | 获胜 | 损失 | 火柴 | 排行 |
---|---|---|---|---|---|
詹姆士 | 123123 | 1 | 3 | 4 | 1 |
哈利 | 1000 | 3 | 2 | 5 | 2 |
开 | 450 | 5 | 0 | 5 | 3 |
最佳 | 123 | 1 | 4 | 5 | 4 |
推荐阅读
- python - 双花括号在 bash 命令中的作用是什么?
- html - 如何使间距相对于屏幕宽度?
- c# - 从 XML 文件中读取密钥时遇到问题
- javascript - axios在参数名末尾添加[]
- python - Pandas Dataframe 遍历行
- shell - 为什么将带有文字引号的字符串传递给 xargs 会使它们消失?
- python - 使用 PyQt Painter 绘图
- python - Zapier 动作代码:Python input_data[] 从列表中剥离空值
- c# - 如何在不编译其他实现的情况下根据预处理器指令更改接口实现?
- google-analytics - 如果有人访问网页,是否可以触发功能?