【MySQL】把成绩低于总平均成绩的女同学的的成绩提高5%
在MySQL中,
把成绩低于总平均成绩的女同学的的成绩提高5%
#首先我们需要确定[成绩表]里是否存在[外键],
如果不存在,那么我们直接进行update语句即可,
如果存在[外键],我们是没办法进行更改成绩的,
那么我们需要先把这个[成绩表]备份一下,
备份/复制一个表的语法是:
create table 新表名 select * from 旧表名;
相应的如果[成绩表]名为"sc"的话,就随便创建一个新表,表名为"sc1",那么语法就是:
create table sc1 select * from sc;
备份完[成绩表]之后,
就可以进行更改操作了,
根据题目,首先我们需要确定几个条件,
第一,总平均成绩
第二,成绩低于总平均成绩的人
第三,所有的女生
那么,好,求出平均成绩的语法是:
select avg(成绩) from 表名;
在[成绩表]里,成绩的字段名为:degree,并且需要在刚才的新表中才可以更改,所以就以[sc1]表为例,具体语法:
select avg(degree) from sc1;
第一步到此为止。
接着,成绩低于总平均成绩的人,语法:
where degree < (select avg(degree) from sc1);
第二步到底结束。
接着,所有的女生,有性别的表是[学生表],所以我们要在[学生表]里查询,语法:
select * from student where ssex="女";
但是,我们需要先要想一想,我们查出了所有的女生,但是我们肯定不需要她们所有的信息,只需要其中的一个项(字段)即可,[学生表]和[成绩表]里都有的字段是[学号]"sno",那么就用[学号]这个字段即可。所以上面的语法要改为:
select sno from student where ssex="女";
那么,好,第三步到此结束。
更新/修改 的语句是:
update 表名 set 列名=表达式... where 条件语句;
所以完整的语句是:
update sc1 set degree=degree*1.05
where sno in (select sno from student where ssex="女")
and degree<(select * from (select avg(degree) as degree from sc1) as a);
好,没了,就这些。
细心的话,会注意到,作为条件的话,一般作为条件的都是一个数据(单个数据),比如[平均成绩]是一个数,比如性别"女"。
但是,
性别为"女"的人的学号是一整列学号,竟然也可以作为条件查询!我还不知道答案的时候,思来想去,不知道如何把一整列学号当作一个条件来使用。
结果一看答案。
惊了!
竟然只用了一个"in"就可以把一整列当作一个条件。
谢谢评论里的提醒,确实是我有地方写错了,这个题我是用Oracle写出来的,我没想到用mysql写出来会出错。
上面的语句已经使用mysql的语法更正。下面说一下会出错的地方有哪些?
两个报错:
报错一:
> 1093 - You can't specify target table 'sc' for update in FROM clause
> 时间: 0.001s
报错翻译是:不能在FROM子句中为UPDATE指定目标表‘sc’。
也就是说,mysql里面,需要update的表和update后面where条件里面的子查询不能是同一个表。(我update的表是sc1,update后面where里面的子查询也是sc1)
这样写会报错:
update sc1 set degree=degree*1.05
where sno in (select sno from student where ssex="女")
and degree<(select avg(degree) as degree from sc1);
那怎么解决呢?只要不是同一个表就行的话,那就把update后面where里面的子查询外面再套一个select。
这样的话,update后面where语句里面的子查询就成了一张临时表。from后面跟一个表名,这一步会让mysql去硬盘里查找是否存在这张表,若存在,我就把这个表的数据形成结果集,拿出来放到内存里,现在我从外面再套一个select from,就是用内存里面的这个结果集里面去查询了,不再是直接从硬盘里去查找了。
报错二:
> 1248 - Every derived table must have its own alias
> 时间: 0s
报错翻译:每个派生表都必须有自己的别名。
也就是说,mysql里面的嵌套子查询需要一个别名。这个报错我在Oracle里面没有见过。现在发现mysql会有这样的问题。
我这样写就会报错:
select * from (select avg(degree) as degree from sc1);
也就是说,外面的这个select from后面的临时表需要一个别名。
如何解决这个报错呢?
解决办法就是,每当遇到一个子查询时,外面的from都加一个别名即可。(别名就是另一个名字,是什么无所谓,只要你理解你知道即可,你给伙伴看的时候一眼就知道啥意思就行,当然了项目中的话,最好别名是有意义的。)
如下:
select * from (select avg(degree) as degree from sc1) as a;
【MySQL】把成绩低于总平均成绩的女同学的的成绩提高5%相关推荐
- mysql数据库更新_将低于总平均成绩的女生的成绩提高5分
将低于总平均成绩的女生的成绩提高5分 该更新需要用到 " update 表名 set 更新表达式 where 条件 " 语句. 根据题意,"女生"需要用到含有性 ...
- 低于90分的成绩 java_查询平均成绩低于60分的学生学号、姓名及成绩。
查询平均成绩低于60分的学生学号.姓名及成绩.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 查询平均成绩低于60分的学 ...
- 2021高考无准考证成绩查询,2021考研没有准考证号怎么查成绩
2021考研没有准考证号怎么查成绩2020-12-10 11:02:14文/徐克达 考研初试结束后,大家最关心的就是成绩的事情了,那么考研没有准考证号怎么查成绩呢?下面是小编整理的详细内容,一起来看看 ...
- 将低于总平均分成绩的女同学的成绩提高5%
有学生表s={sno学号,sex性别......}; 学生课表sc={sno学号,cno课程号,score成绩......}; 问题:将低于平均分成绩的女同学的成绩提高5% update sc set ...
- MySQL 查询学生的总成绩并进行排名_MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况)...
MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况) MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况) 我的表结构: 先放代码 -- 查询各科成绩前三名的记录(不考虑成绩并列情 ...
- 6-4 学生成绩链表处理 (20分) 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。 函数接口定义: ```cpp struct stu
6-4 学生成绩链表处理 (20分) 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表:另一个将成绩低于某分数线的学生结点从链表中删除. 函数接口定义: struct stud_node *c ...
- java学生-成绩关联实体_java毕业设计_springboot框架的学生成绩智能管理
这是一个基于java的毕业设计项目,毕设课题为springboot框架的学生成绩智能管理, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jsp+sp ...
- 运动会成绩管理java代码_基于jsp的运动会成绩管理-JavaEE实现运动会成绩管理 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的运动会成绩管理, 该项目可用各类java课程设计大作业中, 运动会成绩管理的系统架构分为前后台两部分, 最终实现在 ...
- python体能达标成绩_Python+Excel数据分析实战:军事体能考核成绩评定(九)评定个人等级...
这一章我们实现个人成绩的等级评定,根据单杠.仰卧起坐.蛇形跑.3公里跑成绩以及体型,综合评定个人等级. 相关规定:体型合格就不用考虑单项不合格的情况,只看通用训练科目成绩总分(单杠.仰卧起坐.蛇形跑. ...
最新文章
- python使用matplotlib绘制水平条形图并在条形图上添加实际数值标签实战
- (深入理解)强化学习中的policy-based和value-based区别是什么?
- 自己动手写C语言编译器(1)
- 前端开发周边(js版页内锚点跳转方法)
- 【luogu 3811】【模板】乘法逆元
- hive 解密_hive 中自定义 base64 加密 解密 UDF 函数
- MySQL三大日志及主从复制的原理
- 无参考质量评估在视频增强的进展与应用
- Linux启动SAP服务,sap启动相关
- Spring中AOP源码剖析
- php 5.4.39 安装,Lamp 安装(CentOS6.6, php-5.4.39, httpd-2.4.12, mysql-5.6.24)
- 懒不是傻懒,如果你想少干,就要想出懒的方法。要懒出风格,懒出境界。
- 洛谷——P1590 失踪的7
- 微型计算机硬件认识和拆装,微型计算机系统硬件组成及外设认识.doc
- Android趣味课程:九宫格拼图游戏
- 配置vhost、https、重定向
- linux常用命令(包含系统命令)
- 手把手教你,搭建内网穿透服务
- 目前流行的装修风格_2019时下最流行的装修风格有哪些
- <stm32学习笔记>--基本定时器TIM6TIM7