基于秩更新SQL数据库列
我正在做一个项目,其中一个方面是根据每个球员的ELO分数对他们进行排名。我已经能够创建一个SQL查询,它可以作为输出提供排名,但我不知道如何让它实际更新数据库表。我目前正在使用SQLite 当前代码:基于秩更新SQL数据库列,sql,database,sqlite,Sql,Database,Sqlite,我正在做一个项目,其中一个方面是根据每个球员的ELO分数对他们进行排名。我已经能够创建一个SQL查询,它可以作为输出提供排名,但我不知道如何让它实际更新数据库表。我目前正在使用SQLite 当前代码: SELECT name, elo, losses, matches, RANK() OVER(ORDER BY elo DESC) FROM membersData {] 如果您的名字是唯一的,我们将非常感谢您的帮助,这样我们就可以加入了 UPDATE members
SELECT
name,
elo,
losses,
matches,
RANK() OVER(ORDER BY elo DESC)
FROM membersData
{]
如果您的名字是唯一的,我们将非常感谢您的帮助,这样我们就可以加入了
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)
查询#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.
一种方法是
更新中的相关子查询:
UPDATE membersData md
SET ranking = (SELECT COUNT(*) + 1
FROM membersData md2
WHERE md2.elo > md.elo
);
请考虑不要做这个更新,因为你计算的排名是导出的数据。为什么排名450高于123?这是我的错误450应该是3,而123是4thIM新到SQL,当执行这个时,我得到。[18:09:17]在执行数据库“棋子”的SQL查询时出错:接近“M1”。:语法错误。名称也是唯一的。您的代码中可能有错误,请做一个DBFIDLE,以便我可以检查。您已更改代码..它是否适用于sqlite?@ArkieMandziy mysql 5.7没有排名,onply mysql 8.0也有吗?您将您的问题标记为sql lite,因此我编辑了我的答案以满足您的要求您是一个传奇伙计,我非常感谢。我觉得这段代码对你不管用SQLite@ArkieMandziy为什么不呢?
UPDATE membersData md
SET ranking = (SELECT COUNT(*) + 1
FROM membersData md2
WHERE md2.elo > md.elo
);