postgreSQL数据库limit分页、排序

  • Post author:
  • Post category:其他


语法:

select * from persons limit  A  offset  B;

解释:

A就是你需要多少行;

B就是查询的起点位置。

示例:

select * from persons limit 5 offset 0 ;

意思是,起点0开始查询,返回5条数据。

select * from persons limit 5 offset 5 ;

意思是,起点5开始查询,返回5条数据。

特殊:

select * from persons limit 5 ;

这个就类似:

select * from persons limit 5 offset 0;

也就是,从起点0开始查询,返回5条数据。

按规则排序,同时也要分页:

select * from persons

order by lastname

limit 5 offset 0;

中文排序

select id,description from my_table order by description;

select id,description from my_table order by convert_to(description, ‘GBK’);

第一种是按照LANG=C,即ASCII,进行排序。

第二种是按照拼音排序。

默认的排序为order by 字段名,

如果该字段不允许为空的情况下可以这样操作,

但是当字段允许为null时,order by 字段名的方式会导致:

升序时(asc):

会从最小值开始升序,最后面接上字段值为null的值。

降序时(desc):

会把Null值作为最大值排在前面,显然这并不是我们想要的排序结果。

PostgreSQL提供 NULLS FIRST | ORDER BY 子句的最后一个关键字可以满足需要

... ORDER BY last_updated NULLS FIRST
SELECT last_updated 
    FROM your_table 
ORDER BY CASE WHEN last_updated IS NULL THEN 0 ELSE 1 END, 
         last_updated ASC;



版权声明:本文为weixin_43343423原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。