SQL-分页查询offset的用法

在这里插入图片描述

今天在做一道关于查询一张表中第二高工资的问题时发现没有思路,经过一番搜索发现需要用到offset偏移量来解决这个问题。

OFFSET关键字用于指定从结果集的哪一行开始返回数据。通常,它与LIMIT一起使用,以实现分页效果。其语法如下:
SELECT * FROM 表名 LIMIT 行数 OFFSET 偏移量;
或者

SELECT * FROM 表名 LIMIT 行数 , 偏移量;

那么上述问题中要查询第二高的工资正确写法应该如下:

SELECT  salary FROM employee order by salary DESC limit 1,1

后续更新:
在实际使用中发现这两种用法还是有区别的:
举个例子:
我有一张trip表,里面有10条记录,如下:
在这里插入图片描述

我现在使用第一种用法对它进行查询:

SELECT * FROM `trips` LIMIT 2 offset 3;

结果如下:
在这里插入图片描述
这里看id就行,主要看是查询出来的是第几条数据,可以看到查出来的是第4和5条数据。即这条语句实际上是offset 3: 先从第一条数据开始向后偏移3条数据,然后limit 2:输出偏移后的两条数据。

再看第二种用法:

SELECT * FROM `trips` LIMIT 2,3;

结果如下:
在这里插入图片描述

可以看到这里查出来是3条数据,从id=3开始,到5结束。那么这条语句其实是limit2,3中的第一个数字2先控制从第一条数据开始向后偏移两条数据,然后3 是输出3条数据。可以注意到这种方法的两个数字和上面那种用法是刚好相反的,即这里的语句翻译成上面的语句应该是:

SELECT * FROM `trips` LIMIT 3 offset 2;

总结:
两种写法都能做到分页的效果,看个人选择,推荐还是用offset写法,这样不容易记错,看到offset就能想起他是偏移多少条数据。

相关推荐

  1. sql查询

    2023-12-06 02:56:04       34 阅读
  2. SQL

    2023-12-06 02:56:04       58 阅读
  3. 新篇章:从Offset/Limit到游标全面探索

    2023-12-06 02:56:04       58 阅读
  4. MyBatis-Plus实现自定义SQL语句查询

    2023-12-06 02:56:04       74 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-06 02:56:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-06 02:56:04       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-06 02:56:04       82 阅读
  4. Python语言-面向对象

    2023-12-06 02:56:04       91 阅读

热门阅读

  1. Clickhouse遇到密码错误如何修改密码

    2023-12-06 02:56:04       53 阅读
  2. 深入理解Linux用户权限管理:常用命令详解

    2023-12-06 02:56:04       53 阅读
  3. ES6中 对象合并

    2023-12-06 02:56:04       53 阅读
  4. 记录 | CUDA编程中声明内联函数的方法

    2023-12-06 02:56:04       54 阅读
  5. 糊里糊涂在计算机行业混迹10年

    2023-12-06 02:56:04       48 阅读
  6. python昨天日期时间,另外两种方法

    2023-12-06 02:56:04       55 阅读
  7. job_queue_processes参数讲解

    2023-12-06 02:56:04       66 阅读
  8. k8s的部署管理以及prometheus相关监控

    2023-12-06 02:56:04       66 阅读