PostgreSQL FETCH

LIMIT语句经常在许多关系型数据库中使用,比如MySQL,H2,HSQLDB。
但是LIMIT语句不属于SQL标准。
PostgreSQL提供了SQL标准的语句来替代LIMIT,它就是FETCH语句,它是在SQL:2008标准被提出来的。

FETCH语法

OFFSET start { ROW | ROWS }
FETCH { FIRST | NEXT } [ row_count ] { ROW | ROWS } ONLY

FIRST和NEXT是同义词,ROW和ROWS是同义词,同义词可以相互替换
start必须为0或正整数,如果没有OFFSET字句,则start默认为0,如果start比结果集中的行数大,则查询语句不返回结果。
row_count是大于等于1的整数,如果你不指定它,它默认为1

因为表中存储的行顺序是未指定的,所以应该始终使用FETCH子句和order BY子句,以使返回结果集中的行顺序一致。

注意,在SQL:2008中,OFFSET子句必须在FETCH子句之前。但是,在PostgreSQL中,OFFSET和FETCH子句可以以任何顺序出现。

FETCH子句在功能上等同于LIMIT子句。如果您计划使您的应用程序与其他数据库系统兼容,您应该使用FETCH子句,因为它遵循标准SQL。

总结

尽量使用FETCH语句,而不是LIMIT语句。

猜你喜欢

转载自blog.csdn.net/weixin_42072754/article/details/109635764