mysql:update select groupby orderby(分组排序后更新第一条数据)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql:update select groupby orderby(分组排序后更新第一条数据)相关的知识,希望对你有一定的参考价值。
参考技术A有时候我们需要更新table中分组排序后的第一条数据。比如:给各学科分数第一名的学生打标。
如上图所示,现在有一张学生成绩表,我想要各科第一名的学生打标,也就是向mark字段中写入“第一名”标记。那么预想得到的效果应该是这样的:
由于需要使用到group by , 所以需要先检查下mysql对应的sql_mode 是否包含 ONLY_FULL_GROUP_BY ,如果包含,则将sql_mode中的ONLY_FULL_GROUP_BY移除掉,否则下面的SQL可能执行不成功
上面sql中t0表为什么需要使用到DISTINCT,可以查看文章:
执行结果:
SQL分析:
上面的SQL感觉还是过于复杂了,看过下面的文章后:
可以将上面的SQL优化优化.....
优化版写法:
执行结果:
SQL分析:
执行结果:
SQL分析:
上面的SQL中使用到了窗口函数,关于窗口函数相关文章:
以上是关于mysql:update select groupby orderby(分组排序后更新第一条数据)的主要内容,如果未能解决你的问题,请参考以下文章
您不能指定目标表(SELECT Query 上的 UPDATE )?
MySQL UPDATE 与 GROUP_CONCAT 加入三个表
MySQL-SQL优化:主键,order by,group by,limit,count,update