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()的返回值是数字或是字符串,具体情况取决于其所使用的语境。