SQL中,查询一个表中的第10--100条之间的数据怎么写??

2024-12-15 18:41:23
推荐回答(4个)
回答1:

这个主要是看你用的哪个数据库了
不同的数据库有差异。
在mysql和oracle里面用如下方法最简单
select * from table LIMIT 10,100;

而在sqlserver中由于不支持limit只用其他方法啦:
当此表有主键时:
select top 100 * from 表 where 主键 not in(select top 10 主键 from 表)
如果表中无主键:
可以用临时表,加标识字段解决.这里的x,y可以用变量.
select id=identity(int,1,1),* into #tb from 表
select * from #tb where id between 10 and 100

回答2:

有没有ID列?根据什么排序的?是否包含10和100?假设排序列是不连续或不是数字列,可以这样:
从前100条中排除前10条(11-100)
select top 100 * from table where id not in (select top 10 id from table order by id asc) order by id asc
从前100条中获取倒数90条,不过这样查出来是倒序的(100-11)
select top 90 * from (select top 100 * from table order by id asc) as t order by id desc
给每条数据加上一个连续的ID列(11-100)
select top 90 * from
(select top 100 row_number() over(order by id) as rowID,* from table order by id asc) t
where rowid between 11 and 101
还有很多方法,比如:查询到临时表,添加自动增长列;使用 exists等....

回答3:

不同的数据库有不同的用法,mysql、postgresql用limit 100 offset 10;
mssql 用可以top 110 反序再top 100 再序

回答4:

利用分页查询方法就可以了