在PostgreSQL中,有LimitOffset个关键字,可以非常轻松地对结果集进行分页.

SQL Server的等效语法是什么?

推荐答案

LIMIT的等效值是SET ROWCOUNT,但如果需要通用分页,最好编写如下查询:

;WITH Results_CTE AS
(
    SELECT
        Col1, Col2, ...,
        ROW_NUMBER() OVER (ORDER BY SortCol1, SortCol2, ...) AS RowNum
    FROM Table
    WHERE <whatever>
)
SELECT *
FROM Results_CTE
WHERE RowNum >= @Offset
AND RowNum < @Offset + @Limit

这里的优点是,如果您决定更改分页选项(或允许用户这样做),可以对偏移量和限制进行参数化.

Note: @Offset参数应该使用基于一的索引,而不是正常的基于零的索引.

Sql相关问答推荐

PostgreSQL:获取每家店铺收入最高的员工

使用SQL旋转表的列(Snowflake)

Postgres trunc_date删除一个月

使用WHERE子句进行筛选时,SQL SELECT查询返回总计数

SQL:如何将相应位置的两个数组中的元素组合在一起

使用多个嵌套数组查询JSON数据

在Postgres中合并相似的表

Redshift PL/pgSQL循环中的参数化列名

动态组/转置

将FLOAT转换为VARBINARY,然后再转换回FLOAT

对于多字节字符,SQL Server中的DATALENGTH返回1字节

按二维数组的第一个元素排序

group by 并根据同表中其他列的某些条件获取 group by 中的某一列值

如何在 JSONB 数组的每个对象中添加新的键值对- PostgreSQL

使用SQLAlchemy和Postgres数据库创建新行时,为什么我的创建日期比更新日期晚?

Snowflake中的动态SQL优化

如何通过CROSS APPLY获取多级嵌套JSON属性的值?

COBOL\DB2作业(job)需要帮助?快来获取专业指导!

函数调用作为插入值语句中的参数

如何仅在满足条件时才按顺序在 SQL 中计数?