mysql必知必会 - LIMIT

   SELECT语句返回所有符合条件的行!

   使用情景:我们想要SELECT查询出来的数据第一行或者前几行记录,或者要对查询出来的记录进行分页。


   1.查询案例递进

   查询问题1:查询出来所有商品的名称。

   查询SQL:  SELECT prod_name FROM Products;

   查询结果:

   mysql必知必会 - LIMIT_第1张图片

   查询问题2:查询出来所有商品名称,但是每一种商品名称只可以出现一次。

   查询结果:

   mysql必知必会 - LIMIT_第2张图片

   查询问题3:查询出来所有的商品,但相同名称的商品只出现1次,只取出前5条数据。

   查询SQL:SELECT DISTINCT prod_name FROM Products LIMIT 5;

   mysql必知必会 - LIMIT_第3张图片

  

   2.LIMIT说明

  

   2.1 LIMIT num1,num2

   命令解释:

   1.num1和num2是数字;

   2.mysql的第一行是从行0开始,即num1最小值是0而非1;有过编程经历的人都知道,索引值的第一位通常是0;

   3.LIMIT num1,num2,其中num1表示开始位置,即从哪里开始;num2表示要查询的行数,即取出来几条数据,所以LIMIT num1,num2是命令mysql返回num1行开始后的总条数是num2的若干行。比如LIMIT 2,3的含义是取出行2(第3行)开始后的3行数据,即行2(第三行)、行3(第四行)、行4(第五行)。

   类比现实:小学5年级排成1队从左边起第3个人(从哪开始)开始出来2个(个数)人,就是第3个人和第4个人出队;

   案例SQL:

   mysql必知必会 - LIMIT_第4张图片  

   结果分析:

   SELECT DISTINCT prod_name FROM Products;查询的是全部符合条件的数据,共9条。

   SELECT DISTINCT prod_name FROM Products LIMIT 1,3;查询的是从行1开始后的3条数据。从图标中可以看到是取出来的数据是第2,3,4行数据


   2.2.LIMIT num2

   命令解释:请参考LIMIT num1,num2命令来对比理解LIMIT num2.

   1.num2是数字,要查询出来的行数。如果不告诉从哪里开始取值,只告诉取出来个数,那么就存在随便从哪个位置开始,然后取出来num2条数据;

   2.LIMIT num2等价于LIMIT 0,num2,即从行0记录开始,查询出来num2条记录。因此可以知道LIMIT num2,不是随意位置乱取数据,而是从行0记录开始,查询出来num2条记录。

   案例SQL:SELECT DISTINCT prod_name FROM Products LIMIT 2;

   mysql必知必会 - LIMIT_第5张图片

   结果分析:表示告诉mysql返回从行0记录开始的后面2行记录。参考上图对比,取出来的记录是行0,行1记录。


   2.3注意事项

   a.行号,是指计算机对数据的索引值,计算机识别的顺序。行号从0开始,检索的第1个数据的索引值是行0;

   b.第几行,是指人的对数据的索引值的识别顺序,人查询个数从1开始,查询的第1个数据的索引值是1而非0;

   c.案例a、b、c、d四条记录,计算机索引值说b的行号是1,人的常规认识说b是第2行数据.

   d.如果记录不够,比如一共就10条记录,现在要查询LIMITE 9,5;没有足够的行数,那么mysql有多少行就返回多少行。mysql不会进行无中生有。


   2.4LIMIT新语法

   鉴于LIMIT num1,num2语法可能引起误解,从行num1开始获取num2条数据。MySql5支持LIMIT的新语法。

   语法如下:LIMIT num2 OFFSET num1

   语法解释:新语法和LIMIT num1,num2一样,只是新语法简单明了,OFFSET是偏移的意思,从num1位置偏移num2.

   mysql必知必会 - LIMIT_第6张图片

   从上面案例可以看出,LIMIT 3 OFFSET 2,从行2开始获取3条记录。


   2.5LIMIT使用场景

   1.使用LIMIT进行数据分页;

   2.想要查询某种条件的数据是否存在,可以使用LIMIT 1; 

你可能感兴趣的:(MySQL)