mysql:update select groupby orderby(分组排序后更新第一条数据)

mysql:update select groupby orderby(分组排序后更新第一条数据),第1张

有时候我们需要更新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中使用到了窗口函数,关于窗口函数相关文章:

1、首先检查数据库连接是否正常;

2、检查更新语句是否正确,如果不正确,请检查语句中的字段名、表名等是否正确;

3、检查更新数据是否合法,如果不合法,可能会引起数据库更新失败;

4、如果以上检查都没有问题,可以尝试将更新语句拆分成多条,然后每条语句分别执行,以查看哪一条语句出现了问题。

select *from student WHERE cNo=' '

比方说我要查询cNo 为空的就 写一个where cNo=' ' 单引号中间要打一个空格键

修改也一样,update zi set title=1 where title = ‘ ’ 单引号中间要打一个空格键

注意,数据库中只识别单引号,不识别双引号


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7298235.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存