sql练习(mysql版)
学生表student

老师表teacher

课程表course

分数表test

1.数学比语文成绩高的所有学生
select a.sid from
(select * from test where cid=1) a,
(select * from test where cid=2) b
where a.sid=b.sid
and a.score>b.score
2.查询各科分数前三的学生
#第一种
select tmp.* from test as tmp
where
(
select count(*) from test
where cid = tmp.cid and score > tmp.score
)<3
order by cid,score desc
#第二种
select tmp.* from test as tmp
where exists
(
select count(*) from test
where cid = tmp.cid and score > tmp.score
having count(*)<3
)
order by cid,score desc
这个我是这么理解的,首先假设存在各科分数前三的表tmp,那么它的构成就是这样的

和原test表相比,有什么关联呢?

当满足tmp.cid=test.cid=1时,test.score中只有一个99满足>tmp中的其中一个数。
当tmp.cid=test.cid=2时,test.score中有2个数(98和91)满足>tmp中的其中一个数。
可以发现,test.score中,不能有三个数满足大于tmp中的数,不然的话,tmp将存在4个互不相同的数,那就不是前三了。
所以。。。当满足以下条件时,就能保证存在这么一个tmp表。
select count(*) from test
where cid = tmp.cid and score > tmp.score
having count(*)<3
3.查询每个学生数语英三门课的成绩,合并于一张表
SELECT tmp.sid,
(SELECT score FROM test WHERE tmp.sid=sid AND cid='') AS 'math',
(SELECT score FROM test WHERE tmp.sid=sid AND cid='') AS 'chinese',
(SELECT score FROM test WHERE tmp.sid=sid AND cid='') AS 'english'
FROM test AS tmp
GROUP BY tmp.sid
ORDER BY tmp.sid
4.查询每个学生的数学成绩,并在成绩后面注明是否及格
select sid,score,if(score<60,'不及格','及格') as '是否及格'
from test where cid=1
sql练习(mysql版)的更多相关文章
- 全国省市级联数据sql语句 mysql版
全国省市级联数据sql语句 mysql版 --省级 provincial create table provincial ( provincialID int, provincialName ), p ...
- SQL优化 MySQL版 - B树索引详讲
SQL优化 MySQL版 - -B树索引详讲 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] 为什么要进行SQL优化呢?很显然,当我们去写sql语句时: 1会发现性能低 2.执行时间太 ...
- SQL优化 MySQL版 -分析explain SQL执行计划与笛卡尔积
SQL优化 MySQL版 -分析explain SQL执行计划 作者 Stanley 罗昊 [转载请注明出处和署名,谢谢!] 首先我们先创建一个数据库,数据库中分别写三张表来存储数据; course: ...
- SQL优化 MySQL版 - 索引分类、创建方式、删除索引、查看索引、SQL性能问题
SQL优化 MySQL版 - 索引分类.创建方式.删除索引.查看索引.SQL性能问题 作者 Stanley 罗昊 [转载请注明出处和署名,谢谢!] 索引分类 单值索引 单的意思就是单列的值,比如说有 ...
- SQL优化 MySQL版 - 避免索引失效原则(一)
避免索引失效原则(一) 精力有限,剩余的失效原则将会在 <避免索引失效原则(二)>中连载出来,请谅解 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 避免索引失效的一些原 ...
- SQL优化 MySQL版 - 多表优化及细节详讲
多表优化及细节详讲 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:本文章需要MySQL数据库优化基础或观看前几篇文章,传送门: B树索引详讲(初识SQL优化,认识索引):htt ...
- SQL优化 MySQL版 - 单表优化及细节详讲
单表优化及细节详讲 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:本文章需要MySQL数据库优化基础或观看前几篇文章,传送门: B树索引详讲(初识SQL优化,认识索引):htt ...
- SQL优化 MySQL版 -分析explain SQL执行计划与Extra
Extra 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:此文章必须有一定的Mysql基础,或观看执行计划入门篇传送门: https:.html 终于总结到哦SQK执行计划的最 ...
- SQL优化 MySQL版 -分析explain SQL执行计划与Type级别详解
type索引类型.类型 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:看此文章前,需要有一定的Mysql基础或观看上一篇文章,该文章传送门: https://www.cnblo ...
- SQL优化 MySQL版 - 避免索引失效原则(二)
避免索引失效原则(二) 注:继上一篇文章继续讲解: 避免索引失效原则(一)https://www.cnblogs.com/StanleyBlogs/p/10482048.html#4195062 作者 ...
随机推荐
- 实现数据库的跨库join
功能需求 首先要理解原始需求是什么,为什么要跨库join.举个简单的例子,在日志数据库log_db有一份充值记录表pay_log,里面的用户信息只有一个userid:而用户的详细信息放在主库main_ ...
- UEFI+GPT安装windows
首先bios开启uefi windows安装选择驱动器界面:F10 进入命令行: list disk select disk 0 clean convert gpt
- VB6史无前例的子类化之透明按钮
[原创文章,转发请保留版权信息] 作者:mezstd 文章地址:http://www.cnblogs.com/imez/p/3299728.html 效果图: 请原谅笔者无耻地称之为史无前例,至少在笔 ...
- acm结束了
最后一场比赛打完了.之前为了记录一些题目,开了这个博客,现在结束了acm,这个博客之后也不再更新了. 大家继续加油!
- 浅析 Android 的窗口
来源:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=555&fromuid=6 一.窗口的概念 在开发过程中,我们经常会 ...
- Jetson ARM SeetaFace编译
SeetaFace简介 SeetaFace依赖于OpenCV,对于Tegra on Ubuntu,Nvidia提供libopencv4tegra并且可以使用Cuda加速. 准备工作 1.阅读OpenC ...
- weiphp踩坑记录
记录使用weiphp过程中遇到的问题及解决办法: 1.按照网上的教程创建插件怎么没有效果?replyText没有回复信息? 后台清除缓存即可!
- 解决virtualbox装ghost xp装驱动时报portcls.sys蓝屏的问题
原因:portcls.sys是声卡驱动文件,驱动与模拟的声卡型号不匹配. 解决办法:进入PE,把C:\sysprep\audio目录删除.进入系统后用驱动精灵装驱动.
- Jenkins 安装FAQ
1.对路径的访问被拒绝,如: 解决办法:以管理员模式进入DOS命令窗口,参考Jenkins安装中的第4步: 2.服务不能启动,提示: 解决办法:启动Windows Service(InstallU ...
- .vue文件里引用单独样式和js文件
style只能引一个,script可以引多个