关于面试总结3-SQL查询

前言

select top n 形式的语句可以获取查询的前几个记录,但是 mysql没有此语法,mysql用limit来实现相关功能。
LIMIT子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。
如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。

万年不变学生表

有2张表,学生表(student)基本信息如下

科目和分数表(grade)

查询前3名

列出数学成绩前3名的学生(要求显示字段:学号,姓名, 科目,成绩)

select  * from grade where kemu = '数学' order by score desc limit 3

先通过limit取出前三条记录,再结合student表查询

select  a.id, a.name, b.kemu, b.score from student a, grade b where a.id = b.id and kemu = '数学' order by score desc limit 3

查询第2-3名记录

limit后面如果只写一个整数n,那就是查询的前n条记录;如果后面带2个整数n 和 m,那么第一个数n就是查询出来队列的起点(从0开始),第二个是m是统计的总数目
第2-3条记录,那么起点就是1, 第2-3名有2条记录,那么第二个参数就是2

select  a.id, a.name, b.kemu, b.score from student a, grade b where a.id = b.id and kemu = '数学' order by score desc limit 1, 2

备注:limit是按条数取的,名次一样的,也算一个记录。如果取第5-14的记录,那就是limit 4 10

查询第3到后面所有的

select  a.id, a.name, b.kemu, b.score from student a, grade b where a.id = b.id and kemu = '数学' order by score desc limit 3, 10000

注意:有些资料上写的limit 3, -1 用-1代码最大值,这个是不对的,会报错,解决办法:随便写个非常大的整数

英语课程少于80分的人

统计英语课程少于80分的,显示 学号id, 姓名,科目,分数

SELECT a.id, a.name, b.kemu, b.score FROM student a, grade b WHERE a.id = b.id AND b.kemu = '英语' AND b.score < 80

统计每门课程不及格、一般、优秀

课程 不及格(<60) 一般(60<= x <=80) 优秀(>80)

SELECT b.kemu, (SELECT COUNT(*) FROM grade WHERE score < 60 and kemu = b.kemu) as 不及格, (SELECT COUNT(*) FROM grade WHERE score between 60 and 80 and kemu = b.kemu) as 一般, (SELECT COUNT(*) FROM grade WHERE score > 80 and kemu = b.kemu) as 优秀 FROM grade b GROUP BY kemu

查找每科成绩前2名

查找每科成绩前2名,显示id, 姓名,科目,分数

先按科目和分数查询

SELECT t1.id, t1.kemu,t1.score FROM grade t1 ORDER BY t1.kemu,t1.score DESC

再查找每个每科前面2名

SELECT t1.id, a.name, t1.kemu,t1.score FROM grade t1, student a WHERE    (SELECT count(*) FROM grade t2    WHERE t1.kemu=t2.kemu AND t2.score>=t1.score    )<=2 and a.id = t1.id ORDER BY t1.kemu,t1.score DESC

《Python3接口自动化第7期》12月8号开学

(0)

相关推荐

  • MYSQL中UNION和UNION ALL的区别有哪些?

    在mysql中如何想要对两个结果集进行合并操作,可以使用UNION和UNION ALL,如果只是想要去除掉重复的记录,属于UNION ALL 即可,但是如何想要除掉没有重复行数据,就要使用Union. ...

  • EXCEL技巧,Microsoft Query中让SQL查询能使用单元格作为条件参数[摘录...

    此技巧所完成的效果,可能超出大部分同学的想象.因为除了VBA编程和复杂的数组公式,在excel中不太可能实现这样高级的自动筛选效果: 选取关键字后,可以自动从源表中筛选出结果 源表 筛选效果(动画演示 ...

  • sql查询:行转列和 列转行

    目录 一.行转列 1.使用case-when-then 2.使用SUM(IF()) 生成列 3.使用SUM(IF()) 生成列 + WITH ROLLUP 生成汇总行 4.使用SUM(IF()) 生成 ...

  • 筛选出sql 查询结果中 不包含某个字符

    select * from table1 where patindex('%关键字%' , aa) = 0 select * from table1 where charindex('关键字' , a ...

  • 如何让你的SQL查询快2600倍

    初学者的数据库索引简介 > Congratulations 今天在ORM的时代,我们作为开发人员不必经常触摸数据库.我自己自己建立了我的第一个项目而不在项目内写一行的原始SQL. 它起初工作正常 ...

  • MySql 入门到精通-sql查询语句的执行过程,你真的知道吗?

    首先,我们先来看看MySQL的基础架构,我们再平时写的最多的也就是 sql 查询语句,那么,对于一条简单的查询语句,你可否有想过它是如何执行的,期间又经历了哪些步骤呢?如下sql 查询: mysql& ...

  • 【Access】SQL查询

    SQL(Structure Query Language)的中文名称叫结构化查询语言.SQL是一种专门针对数据库操作的计算机语言.SQL查询是使用SQL语句创建的查询. 其实在Access数据库中,我 ...

  • SQL查询去掉重复数据

    本文主要总结数据库去掉重复数据的方法 去掉重复数据的方法: 第一种:distinct 根据单个字段去重,能精确去重: 作用在多个字段时,只有当这几个字段的完全相同时,才能去重: 关键字distinct ...

  • SQL查询语法30例

    学好SQL查询:无他,概手熟耳. 1. 基础表: 学生表: 老师表: 课程表: 成绩表: 2. 题目: 1.查询名字中含有"华"字的学生信息 select * from 学生 wh ...

  • 【数据库】数据库入门(四): SQL查询 - SELETE的进阶使用

    集合操作 常用的集合操作主要有三种:UNION(联合集).INTERSECT(交叉集).EXCEPT(求差集).以上三种集合的操作都是直接作用在两个或者多个 SQL 查询语句之间,将所有的元组按照特定 ...

  • Elasticsearch官方已支持SQL查询,用起来贼方便!

    平时使用Elasticsearch的时候,偶尔会在Kibana中使用Query DSL来查询数据.每次要用到Query DSL时都基本忘光了,需要重新在回顾一遍,最近发现Elasticsearch已经 ...