select column
from table
order by row_number() over ()
limit 1000 offset 200;
我在PostgreSQL中有上述查询。我想要SQL Server等同于上面的。我试过下面的那个:
select top 1000 offset 200 column
from table
order by row_number() over (ORDER BY column ASC)
limit 1000 offset 200;
但它会引发以下错误。
' 17000000'附近的语法不正确。
答案 0 :(得分:2)
SELECT column
FROM table
ORDER BY Row_Number() Over (Order By column)
OFFSET 200 ROWS
FETCH NEXT 1000 ROWS ONLY;
https://technet.microsoft.com/en-us/library/gg699618(v=sql.110).aspx
请注意,您确实应该使用ORDER BY子句,该子句保证每次都提供相同的顺序。
答案 1 :(得分:1)
某些数据库不会为带有偏移量200的INFORMATION_SCHEMA.COLUMNS返回任何内容,但为了工作代码,我把它放在这里。
SELECT t.TABLE_NAME, t.COLUMN_NAME
, ROW_NUMBER() over (order by t.COLUMN_NAME asc) as RowNumber
FROM INFORMATION_SCHEMA.COLUMNS as t
ORDER BY ROW_NUMBER() over (order by t.COLUMN_NAME asc)
OFFSET 200 ROWS
FETCH NEXT 1000 ROWS ONLY