MySQL的limit、offset、ifnull、isnull

limit

select语句中使用limit语句来约束结果中的行数。limit字句接受一个或者两个参数,两个参数必须是零或者正整数。

两个参数的limit字句语法

select 
  column1, column2,...
from 
  table
limit 
  offsetV,countV;

参数解析

offsetV:指定要返回的第一行的偏移量。第一行的偏移量是0而不是1。
countV:指定要返回的最大行数

(图来自

select * table limit 2,1(跳过两条取出一条数据,limit后面是从第2条开始读,读取1条信息,也就是读第2条数据)

带上offset关键字

select 
  column1,column2,...
from 
  table
limit 
  countV offset offsetV;

select * from table limit 2 offset 1(从第一行(不包括)数据开始读取出2条数据,limit后面跟的是2条数据,offset后面是跳过第一行,从第二行开始读取,即读取第2,3行)

当使用带有一个参数的limit字句的时候,此参数将用于确定从结果集的开头返回的最大行数,经常用于获取数据集得到前N行记录

select 
  column1,column2,...
from
  table
limit N;

MySQL中使用limit获取最高值和最低值

limit 字句经常和 group by 一起使用。首先,使用group by 字句根据特定条件对结果集进行排序,然后使用limit字句来查找

例如:获取customers表中信用额度第三和第四高的客户

SELECT customernumber, customername, creditlimit
FROM customers
ORDER BY creditlimit DESC
LIMIT 2 offset 2;

有时候查询不到结果,为了返回查询不到结果的标志,有两种解决方法。

第一种:设为临时表,distinct用来去重。

为什么可以使用临时表解决这个问题呢?

子查询可以在任何地方使用。相当于查询的列。
子查询的特质 子查询数据出虚表嵌套查询虚表,如果查询不到会返回null,棒

select 
  (select distinct
      Salary
    from
      Employee
    order by Salary DESC
    limit 1 offset 1) as SecondHighestSalary;

第二种:使用ifnull和limit字句

select ifnull(
   (select distinct Salary
    from Employee
    order by Salary DESC
    limit 1 offset 1),
  null) as SecondHighsetSalary;

isnull,ifnull的用法如下:

isnull(expr) 的用法: 如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0。 mysql> select isnull(1+1); -> 0 mysql> select isnull(1/0); -> 1 使用= 的null 值对比通常是错误的。

isnull() 函数同 is null比较操作符具有一些相同的特性。请参见有关is null 的说明。

IFNULL(expr1,expr2)的用法:假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。

posted on 2021-10-20 17:05  0·2℃  阅读(200)  评论(0)    收藏  举报

导航