在我的表中,一小时内,每天有 50 名学生提交某项考试的成绩。
下面是表格
ID StudID Marks Rank
1 101 56
2 102 23
3 103 84
4 104 96
5 105 44
我希望当插入所有这些记录时,排名应该自动计算并针对每个记录插入。 例如,Rank 列将按如下方式填充:
ID StudID Marks Rank
1 101 56 3
2 102 23 5
3 103 84 2
4 104 96 1
5 105 44 4
我想在 mysql 中为此创建一个查询。它是在单个查询中完成还是需要任何函数或过程?我应该如何在 mysql 中为上述逻辑编写查询、函数或过程?
注意:我必须使用 PHP 实现上述逻辑。
最佳答案
UPDATE TableName a
INNER JOIN
(
SELECT StudID, Marks,
(SELECT COUNT(DISTINCT b.Marks)
FROM tableName b
WHERE a.Marks <= b.Marks
) as rank
FROM tableName a
ORDER BY Marks DESC
) b ON a.StudID = b.StudID
SET a.Rank = b.rank
关于php - 如何在MySQL中自动更新表中依赖于其他列的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19742303/