mysql数据库,我是初学者

mysql中的三张表,一张学生姓名和学生的id
一张是成绩表,id和成绩,一张是考试科目表格,语数英,一共三位同学,查询出各科最高分数的人和分数和对应的科目展示出来
使用的方法只有关联关系和找最大值和排序

你的表结构不太合理,应该成绩表包括id,学生id,科目id和成绩,考试科目表,包括id和科目名,包括三行记录语数英

SELECT s.姓名, s.ID, k.科目名, MAX(c.成绩) AS 最高分数
FROM 学生表 s
JOIN 成绩表 c ON s.ID = c.学生ID
JOIN 考试科目表 k ON c.科目ID = k.ID
GROUP BY c.科目ID


SELECT s.name, sc.score, su.subject
FROM students s
JOIN scores sc ON s.id = sc.id
JOIN subjects su ON sc.subject_id = su.id
JOIN (
    SELECT subject_id, MAX(score) AS max_score
    FROM scores
    GROUP BY subject_id
) max_scores ON sc.subject_id = max_scores.subject_id AND sc.score = max_scores.max_score;

首先进行了三个表的关联(使用了INNER JOIN),然后使用子查询(subquery)找到每个科目的最高分数。最后,将这个子查询结果与成绩表进行关联,以获取每个科目最高分数的学生和对应的科目。

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/947245
  • 这篇博客也不错, 你可以看下MySql数据库,删除一条数据后,新增数据id不连续解决方法
  • 你还可以看下mysql参考手册中的 MySQL 字符集、对齐方式、统一编码 选择一个整理ID
  • 除此之外, 这篇博客: MySQL 基础模块的面试题总结中的 一张自增表中有三条数据,删除了两条数据之后重启数据库,再新增一条数据,此时这条数据的 ID 是几? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 如果这张表的引擎是 MyISAM,那么 ID=4,如果是 InnoDB 那么 ID=2(MySQL 8 之前的版本)。

    MySQL 中什么情况会导致自增主键不能连续?

    以下情况会导致 MySQL 自增主键不能连续:

    1. 唯一主键冲突会导致自增主键不连续;
    2. 事务回滚也会导致自增主键不连续。

    InnoDB 中自增主键能不能被持久化?

    自增主键能不能被持久化(8.0前)

    说的是 MySQL 重启之后 InnoDB 能不能恢复重启之前的自增列,InnoDB 在 8.0 之前是没有持久化能力的,但 MySQL 8.0 之后就把自增主键保存到 redo log(一种日志类型,下文会详细讲)中,当 MySQL 重启之后就会从 redo log 日志中恢复。