OFFSET FETCH
说明
OFFSET FETCH用于实现数据分页。它是ORDER BY子句的可选部分。如果对它不熟悉,可能我们平时只写到ORDER BY子句就结束了;其实ORDER BY 后面是可以使用OFFSET FETCH的。注意,OFFSET FETCH这是从SQL SERVER 2012开始以后才有的,也就说之前的版本没有这个语法功能。
语法
ORDER BY column_list [ASC |DESC]
OFFSET offset_row_count {ROW | ROWS}
FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} ONLY
解释
ORDER BY column_list [ASC| DESC]
这就是平时写的普普通通的排序条件子句而已。
OFFSET offset_row_count {ROW | ROWS}
紧跟在ORDER BY排序子句的后面,代表偏移量,offset_row_count是偏移值。翻译成中文就是:偏移 offset_row_count 行数据。至于ROW还是ROWS,没有任何区别。
FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} ONLY
这句话翻译成中文:获得后面的 fetch_row_count 行数据。至于FIRST还是NEXT、ROW还是ROWS,没有任何区别。
整个句子翻译成中文的意思是:以 column_list 字段为排序字段,按照ASC正序[或者DESC倒序]的方式对查询数据排序;然后偏移跳过 offest_row_count 行数据;之后再来获取 fetch_row_count 行数据。
例子
SELECT * FROM table_name ORDER BY ID DESC OFFSET 100 ROWS FETCH NEXT 20 ROWS ONLY;
备注
SQL SERVER 2012以后的版本才出现这种用法,需要注意。