各位高手早上好。我最近做一个分页的表格数据。在mysql里很好实现,但在mssql里我不知如何实现。
例如,我每页显示10个数据,第5页就是41到50的数据。我应该如何写高效的sql语句来查询从41到50的数据呢。谢谢。

解决方案 »

  1.   

    SELECT *
    FROM (SELECT rowid=ROW_NUMBER() OVER(ORDER BY id),* FROM tb) AS T
    WHERE rowid BETWEEN 41 AND 50;
      

  2.   


    'ROW_NUMBER' 不是可以识别的 函数名。
      

  3.   

    row_number是2005的函数,2000是没有的!
      

  4.   

    SELECT *
    FROM (SELECT rowid=(select count(1) from tb where id>=a.id......) FROM tb a) AS T
    WHERE rowid BETWEEN 41 AND 50;
      

  5.   

    SELECT TOP 10 * 
    FROM tb AS A
    WHERE id NOT IN(SELECT TOP 40 id FROM tb ORDER BY id);
      

  6.   

    SELECT TOP 10 * 
    FROM tb AS A
    WHERE id > (SELECT MAX(id) FROM (SELECT TOP 40 id FROM tb ORDER BY id) AS T);
      

  7.   


    SELECT TOP 10 * 
    FROM tb AS A
    WHERE id >= (SELECT MAX(id) FROM (SELECT TOP 1 id FROM tb ORDER BY id) AS T);SELECT TOP 10 * 
    FROM tb AS A
    WHERE id >= (SELECT MAX(id) FROM (SELECT TOP 11 id FROM tb ORDER BY id) AS T);SELECT TOP 10 * 
    FROM tb AS A
    WHERE id >= (SELECT MAX(id) FROM (SELECT TOP 21 id FROM tb ORDER BY id) AS T);
      

  8.   

    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
      

  9.   

    --Top语句简单,但子查询多起来后,速度很慢