学生表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版)的更多相关文章

  1. 全国省市级联数据sql语句 mysql版

    全国省市级联数据sql语句 mysql版 --省级 provincial create table provincial ( provincialID int, provincialName ), p ...

  2. SQL优化 MySQL版 - B树索引详讲

    SQL优化 MySQL版  - -B树索引详讲 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] 为什么要进行SQL优化呢?很显然,当我们去写sql语句时: 1会发现性能低 2.执行时间太 ...

  3. SQL优化 MySQL版 -分析explain SQL执行计划与笛卡尔积

    SQL优化 MySQL版 -分析explain SQL执行计划 作者 Stanley 罗昊 [转载请注明出处和署名,谢谢!] 首先我们先创建一个数据库,数据库中分别写三张表来存储数据; course: ...

  4. SQL优化 MySQL版 - 索引分类、创建方式、删除索引、查看索引、SQL性能问题

    SQL优化 MySQL版  - 索引分类.创建方式.删除索引.查看索引.SQL性能问题 作者 Stanley 罗昊 [转载请注明出处和署名,谢谢!] 索引分类 单值索引 单的意思就是单列的值,比如说有 ...

  5. SQL优化 MySQL版 - 避免索引失效原则(一)

    避免索引失效原则(一) 精力有限,剩余的失效原则将会在 <避免索引失效原则(二)>中连载出来,请谅解 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 避免索引失效的一些原 ...

  6. SQL优化 MySQL版 - 多表优化及细节详讲

    多表优化及细节详讲 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:本文章需要MySQL数据库优化基础或观看前几篇文章,传送门: B树索引详讲(初识SQL优化,认识索引):htt ...

  7. SQL优化 MySQL版 - 单表优化及细节详讲

    单表优化及细节详讲 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:本文章需要MySQL数据库优化基础或观看前几篇文章,传送门: B树索引详讲(初识SQL优化,认识索引):htt ...

  8. SQL优化 MySQL版 -分析explain SQL执行计划与Extra

    Extra 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:此文章必须有一定的Mysql基础,或观看执行计划入门篇传送门: https:.html 终于总结到哦SQK执行计划的最 ...

  9. SQL优化 MySQL版 -分析explain SQL执行计划与Type级别详解

    type索引类型.类型 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:看此文章前,需要有一定的Mysql基础或观看上一篇文章,该文章传送门: https://www.cnblo ...

  10. SQL优化 MySQL版 - 避免索引失效原则(二)

    避免索引失效原则(二) 注:继上一篇文章继续讲解: 避免索引失效原则(一)https://www.cnblogs.com/StanleyBlogs/p/10482048.html#4195062 作者 ...

随机推荐

  1. springboot @ConfigurationProperties

    Spring Boot 提供了一种方式 --类型安全的bean,能够根据类型校验和管理application中的bean.继续使用author做例子.配置放在author.properties文件中. ...

  2. 如何解决ajax重复提交的问题

    如下一段代码: 先忽略我没引jquery.js的问题,这是一个案例. 当我们点击提交时,控制台输出两次e,在network里查看,可以看到我们的ajax传输了两次,造成了数据重复提交. 一种解释为bu ...

  3. neo4j-备份、恢复

    neo4j备份命令(本例linux) neo4j-backup 命令使用: ./neo4j-backup -full -from single://[machine IP] -to ~/backup- ...

  4. NSObject+YYModel.h

    01 - nil Nil NULL NSNull kCFNull  的区别 参考:http://www.jianshu.com/p/3aaefb3bcf73 02 - __bridge,__bridg ...

  5. 两种遍历list

    li=[[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]s=0for i in range(0,5): for j in ran ...

  6. 使用DataTable更新数据库

    简例: string connStr = string.Format("Driver={1}Microsoft Access Driver (*.mdb){2};DBQ={0};" ...

  7. tensorflow中的基本概念

    本文是在阅读官方文档后的一些个人理解. 官方文档地址:https://www.tensorflow.org/versions/r0.12/get_started/basic_usage.html#ba ...

  8. Oracle 查询表中字段里数据是否有重复

    1.查找单个字段 select 字段名,count(*) from table group by 字段名 having count(*) > 1 2.查找组合字段: SELECT TEST_NA ...

  9. 18. class

    Class 基本用法 class n { constructor(x,y) { this.x = x; this.y = y; console.log(x,y) } proint() { consol ...

  10. spring+springmvc+mybatis xml配置文件

    一.jdbc.properties 文件: driver=com.mysql.jdbc.Driverurl=jdbc:mysql://192.168.31.xxx:3306/abc?useUnicod ...