1. 首页
  2. 数据库运维
  3. Mysql

PostgreSQL、Mysql中limit使用方法比较

在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据。一般数据库管理系统都会提供这些功能,但是各个DBMS提供的查询方法又有些不一样。下面主要介绍Mysql和PostgreSQL在使用limit查询其中几行数据的区别。

Mysql:

LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初 始记录行的偏移量是 0(而不是 1)。

为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。具体举例:

mysql> SELECT * FROM table LIMIT 5,10;  // 检索记录行 6-15

//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.

//如果只给定一个参数,它表示返回最大的记录行数目:
mysql> SELECT * FROM table LIMIT 5;     //检索前 5 个记录行

//换句话说,LIMIT n 等价于 LIMIT 0,n。

PostgreSQL:

如果给出了一个限制计数,那么返回不超过那么多的行。(但可能更少些,因为查询本身可能生成的行数就比较少。) LIMIT ALL 和省略 LIMIT 子句一样。

//b为起始值(不包括b),a为获取数据长度。

SELECT * FROM table LIMIT a OFFSET b ;

//举例:检索记录行6-15

SELECT * FROM table LIMIT 10 OFFSET 5;

//如果只给定一个参数,它表示返回最大的记录行数目:

SELECT * FROM table LIMIT 5;     //和Mysql用法一样;

//也就是说“OFFSET 说明在开始返回行之前忽略多少行。 OFFSET 0 和省略 OFFSET 子句是一样的。”

当然如果使用LIMIT,那么用ORDER BY 子句把结果行约束成一个唯一的顺序是一个好主意。否则你就会拿到一个不可预料的该查询的行的子集。

联系我们

0574-55011290

QQ:248687950

邮件:admin@nbhao.org

工作时间:周一至周五,9:00-18:00,节假日休息

QR code