Sql server SQL Server动态复杂查询的分页
我找不到一种简单的方法来为SQL server的复杂查询进行分页。我需要编写一个函数,将sql查询作为参数。这个查询可以包括子查询、按语句排序、分组等,并检索特定的结果页面。在oracle中,用另一个select语句封装这样的查询很容易,但对于SQL server,我找不到任何类似的方法。我想要避免的是解析输入SQL语句。我在SQLServer2005中使用SQLServer2005分页,向上分页最好通过排名函数完成。但是,考虑到任意SQL查询是未排序的,您需要以某种方式指定该查询的排序方式,这与您试图使用的通用解决方案不兼容* 建议的方法是假设变量@PageSize和每页的项目数,以及@page作为要检索页面的基于1的索引:Sql server SQL Server动态复杂查询的分页,sql-server,Sql Server,我找不到一种简单的方法来为SQL server的复杂查询进行分页。我需要编写一个函数,将sql查询作为参数。这个查询可以包括子查询、按语句排序、分组等,并检索特定的结果页面。在oracle中,用另一个select语句封装这样的查询很容易,但对于SQL server,我找不到任何类似的方法。我想要避免的是解析输入SQL语句。我在SQLServer2005中使用SQLServer2005分页,向上分页最好通过排名函数完成。但是,考虑到任意SQL查询是未排序的,您需要以某种方式指定该查询的排序方式,这
WITH NumberedQuery AS (
SELECT ROW_NUMBER() OVER (ORDER BY q.SomeColumn) ix, q.*
FROM QueryToPage q
)
SELECT nq.*
FROM NumberedQuery nq
WHERE (nq.ix >= (@Page-1)*@PageSize) AND (nq.ix < @Page*@PageSize);
*:连接SQL代码的方法有几个问题,它阻止使用参数化查询,增加SQL注入的风险,影响性能,如果顺序未指定,则无法解决当前问题