如题,用什么方法?比如我想取出200-300行的数据? 
不用全部查出,然后再分割的方法。
最好通过select语句直接取出固定行数的数据。还有一个问题:
SQL Server 中是否有默认的排序?
比如用select查询(不加排序的条件)查出200-300的行数据,下次再查301-400行数据的时候是不是从第一次的后面300行后查的?

解决方案 »

  1.   

    SQL Server 中是否有默认的排序?

    如果有聚集索引,那就是聚集索引
    如果没有聚集索引,那就按照插入表的次序排序200-300行的查询论坛有很多方法,不过都不如ORACLE方便
      

  2.   

    select id=identity(int,1,1),* into bb from aa
    select * from bb where id>=200 and id<=300
      

  3.   

    select id=identity(int,1,1),* into tb2 from tb1select * from tb2 where id <=300 and id >= 200 order by 某个字段
      

  4.   

    谢谢大家。最好不用存储过程实现。
    还有zzxiaoma(小马) ,dawugui(潇洒老乌龟) 是可行的,你们的方法都用到了临时表。
    我的意思是指对本表操作,不用临时的表。
      

  5.   

    select top 100 * from tablename where id not in (select top 200 id from tablename)
      

  6.   

    select * from student where s_id in (select top 100 s_id from student where s_id in 
    (select top 200 s_id from dbo.student order by s_id) order by s_id desc) order by s_id
      

  7.   

    select top 200 s_id from dbo.student order by s_id 表示先查询前200条------------------------------------------------------------------------
    select top 100 s_id from student where s_id in 
    (select top 200 s_id from dbo.student order by s_id) order by s_id desc
    表示查询出来的前200条,按倒序排序,然后查询前100条
      

  8.   

    jackeyabc(过些天跟布什二女儿订婚)):
    你的那个方法不行,select top 200 id from tablename 的时候已经对id排序了 不是以前的表的顺序了。
    以前表的顺序是按查入的先后排的。
      

  9.   

    xuqi92188(xuqi92188) :
    你方法的确好,但是我的表现在有2个主键。
      

  10.   

    有唯一标识/主键的的方法(id)
    select  top 50 *  from 表名A a where id not (select top 50 id from 表名A)
    没有
    select 50 * from (select top 100 * from 表名A order by 排序列 asc )a
    order by 排序列 desc
      

  11.   

    有唯一标识/主键的的方法(id)
    select  top 100 *  from 表名A a where id not (select top 200 id from 表名A)
    没有
    select 100 * from (select top 300 * from 表名A order by 排序列 asc )a
    order by 排序列 desc
    改一下就可以了不包含前200--方法1
    用asc顺序desc倒序的方法2
      

  12.   

    2005
    with TableCET as
    (
    select row_number() over(order by colKey) TID
    ,* from tableName
    )
    select * from TableCET 
    where TID between 200 and 300
    具体用法可以去的我bolg里看,关于通用存储