使用`limit`和`offset`进行数据分页

问题

当使用数据库查询数据,并且返回的数据行数很多时,往往需要对数据进行分页(pagination),以便UI或者数据使用者进行处理。在PostgreSQL中,如何对数据进行分页呢?

解决方法

PostgreSQL提供了limitoffset,可以对数据进行分页。先简要说一下二者的含义。

  • limit n
    当Select语句返回的数据行数大于n时,只返回n条数据。否则,返回实际的数据行数。
  • offset m
    跳过前m条数据,然后返回相应的数据。如果与limit n结合使用,则先跳过前m条数据,然后再返回n条数据(当数据行数>n)或者返回实际的数据行数。

将二者结合,就可以对数据进行分页处理了。

比如,数据表中有1000行顾客数据,对数据进行分页,每页100条数据。可以使用如下的SQL语句进行处理。当返回的数据条数 < limit时,说明是最后一页,没有新的数据了。

select
  id,
  name
from customer
offset $1  -- $1 分别为0, 100(limit), ..., x * limit
limit 100;

你可能感兴趣的:(使用`limit`和`offset`进行数据分页)