【问题标题】:SQL Server fetch next x number of rows with where clauseSQL Server使用where子句获取下一个x行
【发布时间】:2018-12-10 14:00:19
【问题描述】:

Microsoft SQL Server 2008 R2

我正在运行可能需要数小时才能完成的大型 SQL 选择查询。所以我尝试将查询结果分成更小的集合。

例如,首先返回结果 1-10,000,然后是 10,001 - 20000,以此类推

我使用下面的代码,但它给了我错误

SELECT * 
FROM PP_ConsolidatedSalesView
WHERE financial_period = '2018-11'
ORDER BY id
OFFSET 10000 ROWS
FETCH NEXT 10000 ROWS ONLY

我使用循环来动态更改偏移量并获取下一个值。

错误信息是:

'OFFSET' 附近的语法不正确

有人知道为什么吗?还有其他解决方案吗?

【问题讨论】:

  • 你用的是什么版本?你能分享确切的错误信息吗?
  • 您运行的 SQL Server 版本是什么?运行SELECT @@VERSION 看看。 OFFSET . FETCH 在 SQL Server 2012 中引入,在早期版本中不可用

标签: sql-server fetch offset


【解决方案1】:

能否请您确认数据库兼容级别。 SQL Server 2012 中存在偏移量。如果数据库为 2008 兼容模式,则关键字不可用。

你可以像下面这样检查:

USE AdventureWorks2012;  
 GO  

 SELECT compatibility_level  
 FROM sys.databases WHERE name = 'AdventureWorks2012';  
 GO

更多信息在这里:Incorrect syntax near OFFSET command

【讨论】:

  • 是sql server 2008 R2
猜你喜欢
  • 1970-01-01
  • 2015-09-04
  • 2016-02-03
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2010-09-13
相关资源
最近更新 更多