猿问

SQLServer的限制和偏移量等效吗?

SQLServer的限制和偏移量等效吗?

在PostgreSQL中,LimitOffset关键字,这将允许非常容易分页的结果集。

SQLServer的等效语法是什么?


泛舟湖上清波郎朗
浏览 782回答 3
3回答

一只萌萌小番薯

相当于LIMIT是SET ROWCOUNT,但是如果您想要通用分页,最好编写如下查询:;WITH&nbsp;Results_CTE&nbsp;AS( &nbsp;&nbsp;&nbsp;&nbsp;SELECT &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Col1,&nbsp;Col2,&nbsp;..., &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ROW_NUMBER()&nbsp;OVER&nbsp;(ORDER&nbsp;BY&nbsp;SortCol1,&nbsp;SortCol2,&nbsp;...)&nbsp;AS&nbsp;RowNum&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;Table &nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;<whatever>)SELECT&nbsp;*FROM&nbsp;Results_CTEWHERE&nbsp;RowNum&nbsp;>=&nbsp;@OffsetAND&nbsp;RowNum&nbsp;<&nbsp;@Offset&nbsp;+&nbsp;@Limit这里的优点是,如果您决定更改分页选项(或允许用户这样做),则可以对偏移量和限制进行参数化。注:这个@Offset参数应该使用基于一种索引的方法,而不是普通的基于零的索引。

holdtom

select&nbsp;top&nbsp;{LIMIT&nbsp;HERE}&nbsp;*&nbsp;from&nbsp;( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;*,&nbsp;ROW_NUMBER()&nbsp;over&nbsp;(order&nbsp;by&nbsp;{ORDER&nbsp;FIELD})&nbsp;as&nbsp;r_n_n&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;{YOUR&nbsp;TABLES}&nbsp;where&nbsp;{OTHER&nbsp;OPTIONAL&nbsp;FILTERS})&nbsp;xx&nbsp;where&nbsp;r_n_n&nbsp;>={OFFSET&nbsp;HERE}注:此解决方案仅适用于SQLServer 2005或更高版本,因为ROW_NUMBER()已经实施。
随时随地看视频慕课网APP
我要回答