当前位置: 首页 > news >正文

SQL LIMIT

SQL LIMIT

SQL LIMIT子句简介

要检索查询返回的行的一部分,请使用LIMIT和OFFSET子句。 以下说明了这些子句的语法:

SELECT column_list
FROMtable1
ORDER BY column_list
LIMIT row_count OFFSET offset;

在这个语法中,

  • row_count确定将返回的行数。
  • OFFSET子句在开始返回行之前跳过偏移行。 OFFSET子句是可选的。 如果同时使用LIMIT和OFFSET子句,OFFSET会在LIMIT约束行数之前先跳过偏移行。

在使用LIMIT子句时,使用ORDER BY子句确保返回的行按指定顺序非常重要。

在这里插入图片描述

并非所有数据库系统都支持LIMIT子句,因此,LIMIT子句仅在某些数据库系统中可用,例如MySQL,PostgreSQL,SQLite,Sybase SQL Anywhere和HSQLDB。

SQL LIMIT子句示例

我们将使用示例数据库中的employees表来演示LIMIT子句用法。

在这里插入图片描述
以下语句返回employees表中按first_name列排序的所有行。

SELECT employee_id, first_name, last_name
FROMemployees
ORDER BY first_name;

执行上面查询语句,得到以下结果 -

+-------------+------------+-----------+
| employee_id | first_name | last_name |
+-------------+------------+-----------+
|         103 | Alexander  | Lee       |
|         115 | Alexander  | Su        |
|         114 | Avg        | Su        |
|         193 | Britney    | Zhao      |
|         104 | Bruce      | Wong      |
... ...
|         100 | Steven     | Lee       |
|         203 | Susan      | Zhou      |
|         106 | Valli      | Chen      |
|         206 | William    | Wu        |
+-------------+------------+-----------+
40 rows in set

如果要只返回前5行,请使用LIMIT子句,如以下语句。

SELECT employee_id, first_name, last_name
FROMemployees
ORDER BY first_name
LIMIT 5;

执行上面查询语句,得到以下结果 -

+-------------+------------+-----------+
| employee_id | first_name | last_name |
+-------------+------------+-----------+
|         115 | Alexander  | Su        |
|         103 | Alexander  | Lee       |
|         114 | Avg        | Su        |
|         193 | Britney    | Zhao      |
|         104 | Bruce      | Wong      |
+-------------+------------+-----------+
5 rows in set

要跳过两行并获取接下来的五行,请使用LIMIT和OFFSET子句,如以下语句所示。

SELECT employee_id, first_name, last_name
FROMemployees
ORDER BY first_name
LIMIT 5 OFFSET 3;

结果如下图所示 -

在这里插入图片描述

如果使用的是MySQL,则可以使用LIMIT OFFSET子句的较短形式。

SELECT employee_id, first_name, last_name
FROMemployees
ORDER BY first_name
LIMIT 3 , 5;

使用SQL LIMIT获取具有最高或最低值的前N行

可以使用LIMIT子句获取具有最高或最低值的前N行。 例如,以下声明获得薪资最高的前五名员工。

SELECT employee_id, first_name, last_name, salary
FROMemployees
ORDER BY salary DESC
LIMIT 5;

执行上面示例代码,得到以下结果 -

在这里插入图片描述
首先,ORDER BY子句按工资按降序对员工进行排序,然后LIMIT子句限制从查询返回的五行。为了获得薪资最低的前五名员工,可以按升序对员工进行排序。

获取具有第N个最高值的行

假设必须得到公司薪水第二高的员工。请使用LIMIT OFFSET子句,如下所示。

SELECT employee_id, first_name, last_name, salary
FROMemployees
ORDER BY salary DESC
LIMIT 1 OFFSET 1;

ORDER BY子句按工资降序对员工进行排序。 LIMIT 1 OFFSET 1子句从结果集中获取第二行。此查询的假设是每个员工都有不同的薪水。 如果有两名员工拥有相同的最高薪水,那么它将会失败。 此外,如果有两个或更多具有相同第二高薪的员工,则查询只返回第一个。要解决此问题,可以使用以下语句首先获得第二高薪。

SELECT DISTINCTsalary
FROMemployees
ORDER BY salary DESC
LIMIT 1 , 1;

执行上面示例代码,得到以下结果 -

mysql> SELECT DISTINCTsalary
FROMemployees
ORDER BY salary DESC
LIMIT 1 , 1;
+--------+
| salary |
+--------+
| 17000  |
+--------+
1 row in set

并将结果传递给另一个查询:

SELECT employee_id, first_name, last_name, salary
FROMemployees
WHEREsalary = 17000;

结果如下所示 -

在这里插入图片描述
如果使用子查询,则可以将两个查询组合到单个查询中,如下所示:

SELECT employee_id, first_name, last_name, salary
FROMemployees
WHEREsalary = (SELECT DISTINCTsalaryFROMemployeesORDER BY salary DESCLIMIT 1 , 1);

结果如下所示 -

在这里插入图片描述
在本教程中,我们向您介绍了SQL LIMIT和OFFSET子句,这些子句用于限制查询返回的行数。

http://www.lryc.cn/news/59221.html

相关文章:

  • OpenCV实战之人脸美颜美型(六)——磨皮
  • Java技术栈—重装系统后不重新安装也能正常使用的设置方式
  • 智驾升级!ADB+AFS「起势」
  • 算法记录 | Day27 回溯算法
  • 性能测试总结-根据工作经验总结还比较全面
  • 类型断言[as语法 | <> 语法
  • barret reduction原理详解及硬件优化
  • NLP / LLMs中的Temperature 是什么?
  • c#快速入门~在java基础上,知道C#和JAVA 的不同即可
  • nginx--基本配置
  • R语言中apply系列函数详解
  • 红黑树探险:从理论到实践,一站式掌握C++红黑树
  • CDH6.3.2大数据集群生产环境安装(七)之PHOENIX组件安装
  • 【C++要笑着学】搜索二叉树 (SBTree) | K 模型 | KV 模型
  • 微信小程序开发 | 小程序开发框架
  • 气候系统设计
  • 如何使用Thymeleaf给web项目中的网页渲染显示动态数据?
  • 01 | 电机常用语
  • Leetcode.2601 质数减法运算
  • DP7416国产192K数字音频接收芯片兼容替代CS8416
  • 全球土壤湿度数据获取方法
  • 在proteus中仿真arduino实现矩阵键盘程序
  • 【ROS2指南-5】理解ROS2服务
  • 探索Apache Hudi核心概念 (3) - Compaction
  • 100Wqps异地多活,得物是怎么架构的?
  • 35岁的测试工程师被公司强行辞退,感叹道:我以前就该好好努力了
  • ASP.NET动态Web开发技术第5章
  • 【数据结构与算法篇】时间复杂度与空间复杂度
  • HTTP API接口设计规范
  • 数据一致性校验(pt-table-checksum)