2016-06-17 49 views
0

我有一个很大的查询,然后我转换为JSON,因此我在转换过程中在JAVA中得到OutofMemory异常。我试图实现动态多次分割查询。在SQL Server查询中动态选择记录范围

SELECT ROWS x/10 multiply by (SELECT COUNT(*) FROM myquery) to 
      y/10 multiply by (SELECT COUNT(*) FROM myquery) 
FROM myquery 

我打电话从一个python脚本在HTTP终结这个查询,所以我可以分开我的负荷由1to10称之为十倍例如更换X,Y。

示例选择第一个0/10到1/10记录,然后选择1/10到2/10,然后选择2/10到3/10 ... 9/10到10/10。

+1

? (更高版本提供更多选项...) –

+0

应该指定我在SQLServer 2012 –

+0

所以你想分页?就好像你有200行,然后返回行1到20,然后21到40 .... 181到200? –

回答

2

您需要一个字段来命令您的行称为order_field。并使用解析函数NTILE(10)创建10组

然后传递变量@YourPage来表示你想要的页面

SELECT * 
    FROM (
     SELECT *, 
       NTILE(10) OVER (ORDER BY order_field) as page_number 
     FROM yourTable 
     ) T 
    WHERE T.page_number = @YourPage 
您正在使用什么版本的SQL Server
+0

是否可以删除colums中的page_number? –

+0

是的,用你需要的字段列表来改变外部的'SELECT *'SELECT fieldname [,fieldname]' –