产品操作MySQL第6篇 – 数据过滤-LIMIT子句

MYSQL


本资料为产品岗位作为日常工作参考,语言口语化

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.

你可能感兴趣的:(产品操作MySQL第6篇 – 数据过滤-LIMIT子句)