MSsql中sql语句实现类似mysql的limit

SQL代码
  1. SELECT * FROM    
  2. (   
  3.     SELECT TOP [每页记录] * FROM    
  4.     (   
  5.         SELECT TOP [每页记录*当前页数] [字段1, 字段2, ...]    
  6.         FROM [数据表]       
  7.         ORDER BY [排序字段] DESC  
  8.     )   
  9.     [表别名1]   
  10.     ORDER BY [排序字段]   
  11. )   
  12. [表别名2]    
  13. ORDER BY [排序字段] DESC  

EX. 从 table 表中获取记录,每页5条记录,结果按照 id 倒序排列。读取到第二页时的sql如下

SQL代码
  1. SELECT * FROM    
  2. (   
  3.     SELECT TOP 5 * FROM    
  4.     (   
  5.         SELECT TOP 10 *    
  6.         FROM table    
  7.         ORDER BY id DESC  
  8.     ) t1    
  9.     ORDER BY id   
  10. ) t2    
  11. ORDER BY id DESC  

支持MSSQL,mysql还是用limit,而且mysql不支持top语法。还有这样只是一种偷懒的做法,效率肯定不高。想想看,如果是有几十万条记录,那到最后几页时,那就要先取出几十万的记录再去读取每页的几条,太恐怖了

Tags: limit

« 上一篇 | 下一篇 »

Trackbacks

点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5

发表评论

评论内容 (必填):