在sql中选择中间行

Hos*_*ein 1 sql datagrid linq-to-sql

我在我的SQLServer数据库中有一个表,其中有几乎100K的记录,还有一个Web应用程序,我想在其中显示这些行的分页gridView表示.显然,我应该过滤行并将其中的一小部分返回给客户端(因为Web上的Ajax性能).

这是我的主要问题.选择中间行的最佳方法是什么?例如,如何选择#50000到#50010的行?是否有类似于select top 10select bottom 10从表行中间选择行的方法.

我在.NET MVC Web应用程序中使用linq2sql,也可以编写SQL StoredProcedures代码.

任何建议将不胜感激.

Vin*_*wan 5

不确定abt,但无论如何

SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY colm) RowNumr, colm FROM table) t
WHERE RowNumr BETWEEN 50000 AND 50010
Run Code Online (Sandbox Code Playgroud)


Jac*_*cco 5

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

dataContext.GetTable()
    .Skip(50000)
    .Take(10)
    .ToList();
Run Code Online (Sandbox Code Playgroud)

Scott Guthrie有一篇关于此事的帖子,其中有更多解释.并且Linq2Sql实际上会生成sql使用ROW_NUMBER().

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

  • .Where()
  • .Select()
  • .OrderBy()
  • .Skip()
  • .Take()