1

我的 SQLServer 数据库中有一个表,其中包含近 10 万条记录,还有一个 Web 应用程序,我想在其中显示这些行的分页 gridView 表示。显然我应该过滤这些行并将它们的一小部分返回给客户端(因为 Ajax 在 Web 上的性能)。

这是我的主要问题。选择中间行的最佳方法是什么?例如,如何选择从 #50000 到 #50010 的行?有没有一种方法select top 10可以select bottom 10从表格行的中间选择行。

我在 .NET MVC Web 应用程序中使用 linq2sql,也可以编写 SQL 存储过程。

任何建议将不胜感激。

4

4 回答 4

6

不确定这个,但无论如何

SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY colm) RowNumr, colm FROM table) t
WHERE RowNumr BETWEEN 50000 AND 50010
于 2013-01-23T09:53:23.463 回答
5

Linq2Sql这并不难。您可以使用:

dataContext.GetTable()
    .Skip(50000)
    .Take(10)
    .ToList();

Scott Guthrie 有一篇关于这个问题的帖子,其中有更多解释。并且Linq2Sql实际上会使用ROW_NUMBER().

一些小提示,你的表达顺序很重要:

  • .Where()
  • .Select()
  • .OrderBy()
  • .Skip()
  • .Take()
于 2013-01-23T09:54:50.957 回答
1

http://msdn.microsoft.com/en-us/library/ms186734.aspx

查看此链接,您可以使用 rownumber 根据排序顺序获取所需的行。只需添加一个 where 子句,其中行号在您的分页限制之间。

于 2013-01-23T09:50:20.197 回答
1

试试这个:

select * 
from(select table_name.*,rownum as rn from table_name order by column desc) table_name
where rn between 5000 and 5010;
于 2015-07-07T06:10:58.627 回答