这个分页存储过程,如果有搜索条件,应该加在哪里?
SELECT TOP 页大小 *
FROM table1
WHERE id >
          (
          SELECT ISNULL(MAX(id),0) 
          FROM 
                (
                SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
                ) A
          )
ORDER BY id
这样加吗?
SELECT TOP 页大小 *
FROM table1
WHERE id >
          (
          SELECT ISNULL(MAX(id),0) 
          FROM 
                (
                SELECT TOP 页大小*(页数-1) id,xx FROM table1 and xx ="aaa" ORDER BY id
                ) A
          )
and A.xx ="aaa"
ORDER BY id

解决方案 »

  1.   

    SELECT TOP 页大小 *
    FROM table1
    WHERE id >
              (
              SELECT ISNULL(MAX(id),0) 
              FROM 
                    (
                    SELECT TOP 页大小*(页数-1) id FROM table1 and xx ='aaa'ORDER BY id
                    ) A
              )
    ORDER BY id
      

  2.   

    这样加吗?
    SELECT TOP 页大小 *
    FROM table1 aa
    WHERE id >
              (
              SELECT ISNULL(MAX(id),0) 
              FROM 
                    (
                    SELECT TOP 页大小*(页数-1) id,xx FROM table1 and xx ="aaa" ORDER BY id
                    ) A
              )
    and aa.xx ="aaa"
    ORDER BY id
      

  3.   

    以sql2005中系统表sys.objects为例根据lz的分页sql实现条件的添加,具体代码如下:--分页结果(用户自定义对象前10条)
    SELECT TOP 10 object_id
    FROM sys.objects as b
    WHERE object_id >
              (
              SELECT ISNULL(MAX(object_id),0) 
              FROM 
                    (
                    SELECT TOP 0 object_id FROM sys.objects where type = 'U' ORDER BY object_id
                    ) as A
              )
    and type = 'U'
    ORDER BY b.object_id--对比结果(全部用户自定义对象)
    select * from sys.objects where type = 'U'
      

  4.   


    ---对符合条件的数据经行分页,查询条件当然在最里层了
    SELECT TOP 页大小 * 
    FROM table1
    WHERE id >
              (
              SELECT ISNULL(MAX(id),0) 
              FROM 
                    (
                    SELECT TOP 页大小*(页数-1) id FROM table1 where 条件=''  ORDER BY id
                    ) A
              )go