sql语句中的limit n,limit n,m 和 limit m offset n 的区别

发布于:2022-12-07 ⋅ 阅读:(515) ⋅ 点赞:(0)

目录

一:limit n 和limit n,m的区别:

二:limit n,m 和limit m offset n的区别:

三:用一道leetcode题进行实践

前提解释:

  这里的n表示:需要展示多少条结果数据(要几条)。

  这里的m表示:从第m条开始展示结果数据 (从哪里)  。   

一:limit n 和limit n,m的区别:

日常开发中,我们为了展示有限量的结果,常常这样写

select * from table_tmp limit 100;

表示要展示100条结果数据。其实,这里的完整写法应该为

select * from table_tmp limit 0,100

即 从第1条开始展示,一共展示100条数据。于是,当你需要从第21条开始展示,展示40条数据时,就可以这么写

select * from table_tmp limit 20,40;

二:limit n,m 和limit m offset n的区别:

还是上个例子

select * from table_tmp limit 0,100;

用limit n offset m 会写成为

select * from table_tmp limit 100 offset 0;

 表示从第一行开始取,一共取100条结果数据,其实就是将 limit n,m中的变量互换位置后,中间就要加offset,表示的含义是一样的。

三:用一道leetcode题进行实践

Employee 表:
+-------------+------+
| Column Name | Type |
+-------------+------+
| id          | int  |
| salary      | int  |
+-------------+------+
id 是这个表的主键。
表的每一行包含员工的工资信息。
 

编写一个 SQL 查询,获取并返回 Employee 表中第二高的薪水 。如果不存在第二高的薪水,查询应该返回 null 

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/second-highest-salary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

根据题目,我的方式如下:

select t2.SecondHighestSalary from Employee t1
left join  --左连接可以保证第二名为null时结果为null
(select 
    id,
    ifnull((select distinct salary from Employee order by salary desc limit 1,1),null) as        
    SecondHighestSalary 
from Employee) t2
on t1.id = t2.id
order by t2.salary desc limit 0,1;

you got right?


网站公告

今日签到

点亮在社区的每一天
去签到