php - 如何在MySQL中自动更新表中依赖于其他列的列?

标签 php mysql sql

在我的表中,一小时内,每天有 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/

相关文章:

php - Server2Go 不保存我的数据库

包含磅和盎司的 mysql 文本单元格

sql - 添加唯一约束会减慢速度吗?

sql - 多次从同一列获取 SQL 结果

php - Mysql:根据 WHERE 子句中的匹配数对结果进行排序?

php - 如何在子查询中使用 SHOW CREATE TABLE?

php - MySQL 多表链接

javascript - Google柱形图mysql php不显示

sql - 多用户环境中的临时表使用情况

php - 为类似凭证的行为制作最佳的伪随机唯一代码生成器