SQL LIMIT子句限制SELECT语句返回的行数。对于SQL Server或MSAccess之类的Microsoft数据库,您可以使用SELECT TOP语句来限制结果,这是Microsoft专有的等效于SELECT LIMIT语句。但是,对于大多数关系数据库(DBMS),包括MySQL / MariaDB,PostgreSQL和Oracle,SQL LIMIT子句可以解决几个问题。在今天的文章中,我们将使用Navicat for PostgreSQL探索其中的一些。
Navicat for PostgreSQL是一套专为PostgreSQL设计的强大数据库管理及开发工具。它可以在PostgreSQL数据库7.5以上的版本中运行,并且支持大部份最新的PostgreSQL功能,包括触发器、函数检索及权限管理等。Navicat的的功能不仅可以满足专业开发人员的所有需求,而且对PostgreSQL的新手来说也相当容易学习。
Navicat for PostgreSQL最新试用版
使用SQL限制关键字
SQL LIMIT子句限制SELECT语句返回的行数。对于SQL Server或MSAccess之类的Microsoft数据库,您可以使用SELECT TOP语句来限制结果,这是Microsoft专有的等效于SELECT LIMIT语句。但是,对于大多数关系数据库(DBMS),包括MySQL / MariaDB,PostgreSQL和Oracle,SQL LIMIT子句可以解决几个问题。在今天的文章中,我们将使用Navicat for PostgreSQL探索其中的一些。
使结果集易于管理
在许多生产和测试数据库中,表大小通常达到数百万行,并且有数十列。因此,对数据库运行SELECT *查询绝不是一个好主意。将结果减少到一百或一千个有助于将结果集减少到更容易消化的大小。
Navicat开发和管理工具默认情况下会自动限制结果集,以防止使数据库服务器紧张。打开表时,您可以看到它的运行情况。在应用程序窗口的底部,显示了Navicat执行以获取表行的SQL。它以“ LIMIT 1000 OFFSET 0”结尾,这意味着仅显示前1000条记录。

您可以在“ RECORDS选项”屏幕上更改默认显示的记录数,以完全显示或关闭限制:

前N个查询
顾名思义,前N个查询是尝试从结果集中查找记录数最多的查询。这可以是前1名,前3名,前5名,前10名或前[any]个数字。一些常见的示例是:
- 查找薪水最高的10名员工
- 寻找前20名最赚钱的客户
- 查找系统上的前3名用户
仅使用ORDER BY和WHERE子句而不使用LIMIT子句很难完成这些查询。这是一个例子:
前5个唯一的作业ID
假设我们想在表中找到最重要的唯一作业ID。这是一个执行此操作的查询:

DISTINCT关键字可确保从结果中删除重复的ID。
给定日期最近的行
可以使用LIMIT查找最接近给定日期的行。您只需将行日期与给定日期进行比较,对结果进行排序,然后将结果限制为想要查看的行数。这是一个查询,其返回的creation_date大于“ 2018-01-01”的行:

在这种情况下,最接近的日期是2018-01-02。
底部N个查询
前N个查询的推论是后N个查询。这些查询试图从结果集中找到最低的记录数。我们可以轻松地将“热门”查询转换为它们的“等效”查询!
底部5个唯一的作业ID
要返回最后5个唯一的作业ID,您需要做的就是在ORDER BY子句中删除DESC修饰符。默认情况下,这将以升序(ASC)顺序对记录进行排序:

给定日期以下的最近行
在给定日期之前查找最接近的行同样非常容易。我们只需要将大于’>’运算符更改为小于'<‘并以降序(DESC)顺序对结果进行重新排序:

结论
在今天的博客中,我们使用Navicat for PostgreSQL探索了LIMIT子句的几种用法。想尝试使用Navicat for PostgreSQL吗可以免费完全评估14天!
有想要购买正版授权的朋友,欢迎咨询客服了解详情>>
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!