想用一句sql语句来实现降序分页,不要存储过程。SELECT TOP 5 * FROM Questions WHERE QuestionID <= (SELECT MIN(QuestionID) FROM (SELECT TOP((2-1)*5) QuestionID FROM Questions ORDER BY QuestionID DESC)AS T) ORDER BY QuestionID DESC这条倒是不错,不过老是会忽略前五条数据

解决方案 »

  1.   

    SELECT TOP 5 * FROM Questions WHERE QuestionID <= (SELECT MIN(QuestionID) FROM (SELECT TOP 5 QuestionID FROM Questions ORDER BY QuestionID DESC)AS T) ORDER BY QuestionID DESC--------------
    TOP N 中的N需要的是常数
      

  2.   

    加个判断了
    SELECT TOP 5 * FROM Questions WHERE QuestionID <= (SELECT MIN(QuestionID) FROM (SELECT TOP((case (页码-1) when 0 then 1 else (页码-1) end)*5) QuestionID FROM Questions ORDER BY QuestionID DESC)AS T) ORDER BY QuestionID DESC
      

  3.   

    悲剧降序和升序 是 根据指定字段的 desc/asc 去排序的,和分页sql 有什么关系?
      

  4.   

    SELECT TOP 页大小 *
    FROM 表 WHERE (ID NOT IN (SELECT TOP ((页码-1)*页大小) id FROM 表 ORDER BY id))
    ORDER BY id
      

  5.   

    我一般都用ROW_NUMBER()函数
    SELECT ROW_NUMBER() OVER(ORDER BY ID DESC) AS cou,* FROM 表 WHERE cou BETWEEN 开始条数 AND 结束条数
      

  6.   

    LS的都不可以哦,不过已经解决了,还是要谢谢诸位SELECT TOP 10 * FROM Questions WHERE QuestionID <= 
    (SELECT MIN(QuestionID) FROM (SELECT TOP(1+0*10) 
    QuestionID FROM Questions ORDER BY QuestionID DESC)AS T) ORDER BY QuestionID DESC
      

  7.   

    忘了说了,ROW_NUMBER()函数是SQL 2008中新增加的函数,其他版本可能没有这个函数,其他版本的可以采用 SELECT TOP 方法,也很简单