在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%相关推荐

  1. mysql数据库更新_将低于总平均成绩的女生的成绩提高5分

    将低于总平均成绩的女生的成绩提高5分 该更新需要用到 " update 表名 set 更新表达式 where 条件 " 语句. 根据题意,"女生"需要用到含有性 ...

  2. 低于90分的成绩 java_查询平均成绩低于60分的学生学号、姓名及成绩。

    查询平均成绩低于60分的学生学号.姓名及成绩.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 查询平均成绩低于60分的学 ...

  3. 2021高考无准考证成绩查询,2021考研没有准考证号怎么查成绩

    2021考研没有准考证号怎么查成绩2020-12-10 11:02:14文/徐克达 考研初试结束后,大家最关心的就是成绩的事情了,那么考研没有准考证号怎么查成绩呢?下面是小编整理的详细内容,一起来看看 ...

  4. 将低于总平均分成绩的女同学的成绩提高5%

    有学生表s={sno学号,sex性别......}; 学生课表sc={sno学号,cno课程号,score成绩......}; 问题:将低于平均分成绩的女同学的成绩提高5% update sc set ...

  5. MySQL 查询学生的总成绩并进行排名_MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况)...

    MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况) MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况) 我的表结构: 先放代码 -- 查询各科成绩前三名的记录(不考虑成绩并列情 ...

  6. 6-4 学生成绩链表处理 (20分) 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。 函数接口定义: ```cpp struct stu

    6-4 学生成绩链表处理 (20分) 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表:另一个将成绩低于某分数线的学生结点从链表中删除. 函数接口定义: struct stud_node *c ...

  7. java学生-成绩关联实体_java毕业设计_springboot框架的学生成绩智能管理

    这是一个基于java的毕业设计项目,毕设课题为springboot框架的学生成绩智能管理, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jsp+sp ...

  8. 运动会成绩管理java代码_基于jsp的运动会成绩管理-JavaEE实现运动会成绩管理 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的运动会成绩管理, 该项目可用各类java课程设计大作业中, 运动会成绩管理的系统架构分为前后台两部分, 最终实现在 ...

  9. python体能达标成绩_Python+Excel数据分析实战:军事体能考核成绩评定(九)评定个人等级...

    这一章我们实现个人成绩的等级评定,根据单杠.仰卧起坐.蛇形跑.3公里跑成绩以及体型,综合评定个人等级. 相关规定:体型合格就不用考虑单项不合格的情况,只看通用训练科目成绩总分(单杠.仰卧起坐.蛇形跑. ...

最新文章

  1. python使用matplotlib绘制水平条形图并在条形图上添加实际数值标签实战
  2. (深入理解)强化学习中的policy-based和value-based区别是什么?
  3. 自己动手写C语言编译器(1)
  4. 前端开发周边(js版页内锚点跳转方法)
  5. 【luogu 3811】【模板】乘法逆元
  6. hive 解密_hive 中自定义 base64 加密 解密 UDF 函数
  7. MySQL三大日志及主从复制的原理
  8. 无参考质量评估在视频增强的进展与应用
  9. Linux启动SAP服务,sap启动相关
  10. Spring中AOP源码剖析
  11. php 5.4.39 安装,Lamp 安装(CentOS6.6, php-5.4.39, httpd-2.4.12, mysql-5.6.24)
  12. 懒不是傻懒,如果你想少干,就要想出懒的方法。要懒出风格,懒出境界。
  13. 洛谷——P1590 失踪的7
  14. 微型计算机硬件认识和拆装,微型计算机系统硬件组成及外设认识.doc
  15. Android趣味课程:九宫格拼图游戏
  16. 配置vhost、https、重定向
  17. linux常用命令(包含系统命令)
  18. 手把手教你,搭建内网穿透服务
  19. 目前流行的装修风格_2019时下最流行的装修风格有哪些
  20. <stm32学习笔记>--基本定时器TIM6TIM7

热门文章

  1. Golang LiteIDE的安装
  2. Windows server2019所有国家语言转换,不在担心系统中英版本
  3. python的研究现状_python在中国的现状和发展趋势?
  4. MPLS VPN跨域方案OptionA、B、C1、C2路由传递和数据转发三种方案的总结 配置思路
  5. HCIP之MPLS中的VPN
  6. 面试准备FPGAor数字IC(三)-边沿检测、门控时钟、单双口RAM、亚稳态等
  7. 【日记】Eratosthenes Sieve
  8. 毕业设计之 ---- 基于Java web 的公司财务管理系统
  9. Python暴力破解zip文件
  10. 区块链技术在汽车无人驾驶领域的应用