我的SQLServer数据库中有一个表,里面有几乎100K的记录,还有一个Web应用程序,我想在其中显示这些行的分页gridView表示。显然,我应该过滤行并将其中的一小部分返回给客户端(因为Web上的Ajax性能)。
这是我的主要问题。选择中间行的最佳方法是什么?例如,如何选择#50000到#50010的行?有没有像select top 10
或select bottom 10
这样的方法从表格行的中间选择行。
我在.NET MVC Web应用程序中使用linq2sql&也可以编写SQL StoredProcedures。
任何建议都将受到赞赏。
答案 0 :(得分:5)
对此不确定,但无论如何
SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY colm) RowNumr, colm FROM table) t
WHERE RowNumr BETWEEN 50000 AND 50010
答案 1 :(得分:5)
在Linq2Sql
中,这并不难。您可以使用:
dataContext.GetTable()
.Skip(50000)
.Take(10)
.ToList();
Scott Guthrie has a post关于此事,有更多解释。 Linq2Sql
实际上会使用ROW_NUMBER()
生成sql。
一些小提示,你的表达顺序很重要:
.Where()
.Select()
.OrderBy()
.Skip()
.Take()
答案 2 :(得分:1)
http://msdn.microsoft.com/en-us/library/ms186734.aspx
检查此链接,您可以使用行号根据排序顺序获取所需的行。只需添加一个where子句,其中行号在您的分页限制之间。
答案 3 :(得分:1)
试试这个:
select *
from(select table_name.*,rownum as rn from table_name order by column desc) table_name
where rn between 5000 and 5010;