本资料为产品岗位作为日常工作参考,语言口语化
At 2019/4/26 By David.Yang
介绍下重量级子句LIMIT
我们在逛马蜂窝的时候,多少会看看游记攻略什么的,
你会发现马蜂窝一页给你10条左右的游记内容,你要继续看的话点分页,
会给你下20条数据。
想象如果没有分页呢?
已下载给你百万千万篇游记,你会不会疯了?
你不疯马蜂窝的数据库也得疯。
那一页一页的数据返回固定的游记数量,是怎么实现的呢?
这就是我们本篇的主角,LIMIT。
LIMIT在SELECT语句当中是构成查询的子句,用来约束返回结果集的行数。
LIMIT接受两个参数,两个参数都为0或正整数。
你每次拉分页时是不是有第几页和每页10篇这两个参数?
他们跟LIMIT子句的参数有关。
LIMIT子句讲解
LIMIT字句语法
SELECT
column1, column2, ...
FROM
table_name
LIMIT OFFSET, SIZE;
ϒ OFFSET 指定返回第一行的偏移量
ϒ SIZE 指定返回行数最大值
看图说话
默认参数
当你的LIMIT只有一个参数时,也会发生作用,这唯一的参数将从结果集的开头返回最大的行数。
SELECT
column1, column2, ...
FROM
table_name
LIMIT SIZE;
等价于:
SELECT
column1, column2, ...
FROM
table_name
LIMIT 0, SIZE;
LIMIT获取前SIZE行数据
控制LIMIT只赋予SIZE一个参数
SELECT
column1, column2, ...
FROM
table_name
LIMIT SIZE;
比如,查找前5个学生
SQL
SELECT
*
FROM
students
LIMIT 5;
得到前五行的学生
以上SQL等价于
SELECT
*
FROM
students
LIMIT 0, 5;
LIMIT与ORDER BY子句的配合使用
是,有了LIMIT我们是能够分页看游记了,
但是吧,我想看最新的,
我还想看最热门的,有时候吧还想看游记出发时间比较近,
还想看…
“滚”
但其实是可以实现的啊?
我们这时候就需要配合使用ORDER BY,排序字句了。
LIMIT 一般都会配合ORDER
BY子句使用,
ORDER BY子句将根据指定的条件对结果集实现排序,
然后通过LIMIT子句实现返回。
ORDER BY语法
ORDER BY column DESC/ASC
ORDER BY 后接需要排序的字段,表示按什么排序
DESC 降序排序,由大到小
ASC 升序排序,由小到大
举个例子,比如
--按年龄找到前5的学生,使用此排序条件
SQL
SELECT
*
FROM
students
ORDER BY ageDESC
LIMIT 5;
--找到年龄最小的5名同学
SQL
SELECT
*
FROM
students
ORDER BY age ASC
LIMIT 5;
看,最小的郭襄才6岁呀。
使用LIMIT实现第N个最高值的获取
在业务分析当中,通常需要在结果集当中获得第N个最高值,
比如成绩第二,销量第五,我们可以通过LIMIT来实现。
步骤:
- 按照关键字段进行目标排序,降序
- 使用LIMIT进行行获取
举个例子
我们要获取学生当中年龄第2大的学生
- 第一个任务,将学生按照年龄进行排序(降序)
SELECT
*
FROM
students
ORDER BY age DESC;
- 第二个任务,在排序的结果集当中,查找第二年龄大的学生,
使用LIMIT获取学生。
既然要的是第二年龄大的学生,说明是从年龄从大到小的学生中获取年龄第二大的学生。
偏移量为1,获取一行。
SELECT
*
FROM
students
ORDER BY age DESC
LIMIT 1, 1;
是他啊!
本篇完结。
你现在多少理解LIMIT子句的特性,也改回使用了吧,
并且还捎带学了点关于排序的内容哦,
后面讲排序也就会更容易接受了。
Bye Bye.