mysql数据库中 update 语句 left join 获取多条数据中最大值
mysql 中的 update 语句可以用于更新表中的数据。如果需要更新某一字段的值为其他表中多条数据中某字段的最大值,可以使用 left join 来实现。
问题背景
我们有一张 student 表,其中包含学生姓名 name 和分数 score 字段。还有一张 score 表,其中包含学生的分数记录,每个学生可能有多次分数记录。
更新语句
要将 student 表中 score 字段更新为 score 表中每个学生的最高分,可以使用以下 update 语句:
MySQL(Linux)
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
下载
left join 用法
left join 语法将 student 表与 score 表连接,并返回 student 表中的所有行,即使这些行在 score 表中没有匹配项。如果 student 表中的某一行在 score 表中有多条匹配项,则 left join 将返回其中包含最大分数的那条记录。
查询示例
更新后的 student 表如下所示:
idnamescore1小明802小红98
update student set score = (select max(score) from score where score.student_id = student.id)