互联网的搬运工 分类搜索 官网    VIP电影   留言板   免责声明    我要投稿   后花园

网站首页 技术 正文

数据库SQL查询&LIMIT的用法

小冰 2021-07-21 技术 81 ℃ 0 评论

前言

select top n 形式的语句可以获取查询的前几个记录,但是 mysql没有此语法,mysql用limit来实现相关功能。

LIMIT子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。

如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。

万年不变学生表

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

数据库SQL查询&LIMIT的用法 技术 第1张

科目和分数表(grade)

数据库SQL查询&LIMIT的用法 技术 第2张

查询前3名

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

select *

from grade

where kemu = '数学'

order by score

desc

limit 3

数据库SQL查询&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

数据库SQL查询&LIMIT的用法 技术 第4张

查询第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

数据库SQL查询&LIMIT的用法 技术 第5张

备注: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代码最大值,这个是不对的,会报错,解决办法:随便写个非常大的整数

数据库SQL查询&LIMIT的用法 技术 第6张

英语课程少于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

数据库SQL查询&LIMIT的用法 技术 第7张

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

课程不及格(<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

数据库SQL查询&LIMIT的用法 技术 第8张

查找每科成绩前2名

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

先按科目和分数查询

SELECT t1.id, t1.kemu,t1.score

FROM grade t1

ORDER BY t1.kemu,t1.score DESC

数据库SQL查询&LIMIT的用法 技术 第9张

再查找每个每科前面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

数据库SQL查询&LIMIT的用法 技术 第10张

Tags:

< 温馨提示 >
本站资源如有密码均为:70ol.com
学到东西应该懂得感恩作者 无脑喷子永封IP段+删帐号所有评论
本站资源软件和源码 文章大部分为网上收集,如侵犯您的权利,请告知管理员,我们会及时删除,并向您赔礼道歉.

站长QQ:  官方QQ群:558413792

猜你喜欢

本文暂时没有评论,来添加一个吧(●'◡'●)


欢迎 发表评论:

请填写验证码
搜索
最近发表
网站分类
友情链接
标签列表
文章归档
最新留言
站点信息
  • 文章总数:453
  • 页面总数:1
  • 分类总数:14
  • 标签总数:19
  • 评论总数:7
  • 浏览总数:358630