在SQL Server查询中动态选择记录范围

时间:2016-06-17 14:04:01

标签: sql sql-server

我有一个很大的查询要做,然后我转换为JSON,所以我在转换过程中得到了JAVA中的OutofMemory Exception。我试图实现的是动态分配查询多次调用它。

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

我从http端点上的python脚本调用此查询,因此我可以将我的负载分开,以便将其调用十次,例如将x,y替换为1到10.

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

1 个答案:

答案 0 :(得分: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