如题,用什么方法?比如我想取出200-300行的数据?
不用全部查出,然后再分割的方法。
最好通过select语句直接取出固定行数的数据。还有一个问题:
SQL Server 中是否有默认的排序?
比如用select查询(不加排序的条件)查出200-300的行数据,下次再查301-400行数据的时候是不是从第一次的后面300行后查的?
不用全部查出,然后再分割的方法。
最好通过select语句直接取出固定行数的数据。还有一个问题:
SQL Server 中是否有默认的排序?
比如用select查询(不加排序的条件)查出200-300的行数据,下次再查301-400行数据的时候是不是从第一次的后面300行后查的?
有
如果有聚集索引,那就是聚集索引
如果没有聚集索引,那就按照插入表的次序排序200-300行的查询论坛有很多方法,不过都不如ORACLE方便
select * from bb where id>=200 and id<=300
还有zzxiaoma(小马) ,dawugui(潇洒老乌龟) 是可行的,你们的方法都用到了临时表。
我的意思是指对本表操作,不用临时的表。
(select top 200 s_id from dbo.student order by s_id) order by s_id desc) order by s_id
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条
你的那个方法不行,select top 200 id from tablename 的时候已经对id排序了 不是以前的表的顺序了。
以前表的顺序是按查入的先后排的。
你方法的确好,但是我的表现在有2个主键。
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
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
with TableCET as
(
select row_number() over(order by colKey) TID
,* from tableName
)
select * from TableCET
where TID between 200 and 300
具体用法可以去的我bolg里看,关于通用存储