SQL Server相当于Postgres查询

时间:2016-11-07 04:53:59

标签: sql-server postgresql limit offset

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'附近的语法不正确。

2 个答案:

答案 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