SQL查询asp.net分页格(SQL query for asp.net grid paginat

2019-09-18 01:10发布

我使用iBatisSQLServer

什么是使用偏移pagging查询的最佳方式和限制?

也许我添加列ROW_NUMBER() OVER (ORDER BY Id) AS RowNum ,但这只会防止简单查询的数据访问。 有一些情况下,我使用的选择工会。 如何租期,提高这些查询?

Answer 1:

我不知道ibatis的东西,但我想你可以在SQL做到这一点。

如果我理解正确的话,你想获得分页几个select语句的select语句或联合的结果。

我会做下列方式。 这可能是例如一个存储过程,并有可能应该理智一些在那里检查检查的价值观偏移和限制都大于0。如果你这样做最终会做这样的事情,一定要更换*您列名字呢!

下面是一个联合的示例:

DECLARE @offset INT;
DECLARE @limit INT;

WITH cte
     AS (SELECT t.*,
                Row_number() OVER (ORDER BY Id) AS RowNum
         FROM   (SELECT *
                 FROM   Table1
                 UNION
                 SELECT *
                 FROM   Table2) t)
SELECT *
FROM   cte
WHERE  RowNum BETWEEN @offset AND @offset + @limit

基本上我做了什么是派生的新表从两个查询的联合,如你所说,你的情况可能发生。 我然后在添加行号列到这个结果CTE ,那么只能选择在指定的行@Offset@limit + @offset找回只有你问行。

例如,设置@offset = 50@limit = 50 ,你会得到返回结果50-100(在指定的条件为有序Row_number以上条款。

(我希望这是那种你要找的东西!)

编辑:这只会在SQL Server 2005中开始工作-你没有提到你正在使用的版本!



文章来源: SQL query for asp.net grid pagination