select  top 50 *
from 
(SELECT TOP 1050 A.SPP,A.CPP FROM SPP_TT A INNER JOIN CPP_TT B ON A.ID=B.ID ORDER BY A.SPP ASC,B.CPP DESC)t
order by SPP desc,CPP asc

解决方案 »

  1.   

    select 
    *
    from 
    (select row=row_number()over(order by A.SPP ASC,B.CPP DESC),A.SPP,A.CPP
    FROM SPP_TT A 
    INNER JOIN CPP_TT B ON A.ID=B.ID )t
    where
    row between 1001 between 1050
      

  2.   

    楼主的意思是在A表ID=B表ID的情况下,去除前1000条记录,再取剩下的前50条
      

  3.   

    大概就如zc_0101的解释最近在研究SQL分页的效率,多表多排序。参考了晚上数个所谓高效分页,整来整去,目前就感觉这样效率相对较高但实际效率还是不理想,尤其在几十万,几百万,且非本地机的条件下运行,则运行的速度就更不理想了郁闷语句的意思是先排序,剔除出前N-1页((当前页数-1)x每页记录数)的数据,再提取TOP(每页记录数)数据,而得到第N页(当前页)的数据适用于从第2页开始的数据,第1页则直接TOP,省去NOT IN 条件