mysql - 从 mysql 表中选择列中的最大数时效率更高

标签 mysql

在下表中,无论类(class)如何,我都需要为学生选择最高分。可能的分数是 5、4 到 0。我可以使用基本的 select distinct score order by 来获得结果。但是该语句扫描全表并进行排序,比较耗时。由于目标只有 5 个可能的值,我相信存在效率更高的解决方案。

CREATE TABLE `course_score` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `create_time` datetime DEFAULT NULL,
  `score` int(5) DEFAULT NULL,
  `course_id` int(11) DEFAULT NULL,
  `student_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=100048 DEFAULT CHARSET=utf8;

最佳答案

可以使用 max() 聚合函数

select max(score) 
from course_score

或者如果您需要学生明智的最高分数,您可以执行以下操作 -

 select student_id,max(score) 
    from course_score group by student_id

关于mysql - 从 mysql 表中选择列中的最大数时效率更高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54284057/

相关文章:

php - 在顶部和其他之后获得特定的 id

mysql - 为什么 MYSQL 全文搜索 Match AGAINST 不能正常工作?

mysql - SQL:如何使用函数返回 View

mysql - 我应该单独还是成组索引列?

php - 无法跳转到 MySQL 结果索引 13 上的第 0 行

php - 按日期对结果进行排序和分组

java - TemporalType.TIMESTAMP 精度的 Hibernate 注解

php - 多个 PHP mysqli 准备好的语句(INSERT UPDATE SELECT)奇怪的行为

mysql2 gem 支持可更新记录

php - mysql php查询查找输入的最长匹配部分