【问题标题】:Pagination in Sqlserver 2008Sql Server 2008 中的分页
【发布时间】:2017-12-21 13:16:13
【问题描述】:

我使用 opencsv libray 将 ResultSet 写入 csv 文件,使用 writeAll 方法。由于数据库非常大,我必须拆分数据库记录并将它们写入不同的 csv 文件(例如,必须写入每 1000 行在不同的文件中。)我已经读过这个,但我还没有成功。我用过类似的东西

select * from table1
Order by id
OFFSET 0 FETCH NEXT 1000 ROWS ONLY;

但它不起作用。有人可以告诉我如何实现这一点吗?

【问题讨论】:

  • 你能解释一下不起作用吗?您收到错误消息吗?如果是这样,它是什么?你得到不正确的结果吗?整个互联网上有几十个甚至上千个如何做到这一点的例子。
  • 尝试在文件中写入 ResultSet 时抛出 NullPointerException
  • 您是在OFFSET 0 之后错过了ROW(S),还是只是一个错字
  • 我错过了,但还是一样

标签: sql-server pagination


【解决方案1】:

尝试以下方法:

select * from table1
Order by id
OFFSET 0 ROWS 
FETCH NEXT 1000 ROWS ONLY;

谢谢。

【讨论】:

  • 哦,您使用的是 SQL server 2008,这些功能(Offset/Fetch)是从 SQL server 2012 开始的。
  • 那么有没有其他方法可以实现这样的目标?
  • 以下链接中提供了非常好的方法:stackoverflow.com/questions/2244322/…
【解决方案2】:

如果其他人需要它:

WITH CTEResults AS
(
    SELECT IDColumn, SomeField, DateField, ROW_NUMBER() OVER (ORDER BY DateField) AS RowNum
    FROM MyTable
)

SELECT * 
FROM CTEResults
WHERE RowNum BETWEEN 10 AND 20;

【讨论】:

    猜你喜欢
    • 2015-09-29
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2011-05-20
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多