gpt4 book ai didi

mysql - 使用选择查询顺序按最高值降序更新列

转载 作者:行者123 更新时间:2023-11-29 18:07:10 25 4
gpt4 key购买 nike

我从表中返回一组记录,按最高分排序。

Select name,score from score_tbl order by score desc

现在我想做的是在 score_tbl 上有一个名为 position 的列,我想使用更新语句根据选择查询更新该列因此位置会根据用户的分数更新

最佳答案

听起来您想根据“分数”字段更新表中所有行的“位置”值。换句话说,得分最高的行的位置值为 1。试试这个:

UPDATE score_tbl
FROM (
SELECT name, RANK() OVER(ORDER BY score DESC) ScorePosition
FROM score_tbl
) src
SET position = src.ScoreRank
WHERE name = src.name

这使用“src”派生表,您可以在其中生成排名来更新目标表。这假设“name”是您的表的 PK。

不确定您的数据库是什么,因此您可能需要稍微调整查询。但这应该能让你继续前进。让我知道进展如何。

已更新
尝试以下查询:

UPDATE competitors 
INNER JOIN (
SELECT
id,
RANK() OVER w AS 'ScorePosition'
FROM competitors
WINDOW w AS (ORDER BY score DESC)
) src ON competitors.id = src.id
SET position = src.ScorePosition;

看起来 Windows 函数是在 MySQL 8.0 中引入的,因此您需要访问该版本。我无法访问该版本,因此无法进行测试。但请告诉我它是否有效。

另外,请查看这篇文章以获取一些帮助:

How do I UPDATE from a SELECT in SQL Server?

关于mysql - 使用选择查询顺序按最高值降序更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47733096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com