当前位置: 技术问答>java相关
如何数据库从数据库中取得指定的行数的结果集!----急!!!!
来源: 互联网 发布时间:2015-07-17
本文导语: 我想从数据库中取出指定的结果集,如第一次取出前10行纪录,第二次取出接下来的十行纪录,以此类推,直到完全遍历所有的纪录。 我本来想通过自动递增的id来实现,可是当我一旦删除某条纪录后,他就又不连续...
我想从数据库中取出指定的结果集,如第一次取出前10行纪录,第二次取出接下来的十行纪录,以此类推,直到完全遍历所有的纪录。
我本来想通过自动递增的id来实现,可是当我一旦删除某条纪录后,他就又不连续了。如果能够让他一直连续也可以。
我本来想通过自动递增的id来实现,可是当我一旦删除某条纪录后,他就又不连续了。如果能够让他一直连续也可以。
|
有个办法可以通过一个sql语句获得从m到n的条数,不妨为从20到30条:(假设你的数据库记录中id是自动递增的(其实随便一个可以排序的字段就行))
SELECT TOP 10 * FROM tableName
WHERE id IN (SELECT TOP 30 id FROM tableName ORDER BY id ASC)
ORDER BY id DESC
这条语句是先按id升序取出前30条记录的id,然后再通过这个id取降序的前10条,即最后取得的是id升序的第30到第20条(但此时排列为降序)
若希望结果也为id升序的,可以再来一次SELECT语句的嵌套:
SELECT * FROM tableName
WHERE id IN
(SELECT TOP 10 id FROM tableName
WHERE id IN (SELECT TOP 30 id FROM tableName ORDER BY id ASC)
ORDER BY id DESC)
ORDER BY id ASC
以上语句已经测试过,肯定正确。select的结果就是按升序排列的第20到30条。当然具体顺序你自己可按需求设定,最好先在数据库环境下执行一遍看看结果。
SELECT TOP 10 * FROM tableName
WHERE id IN (SELECT TOP 30 id FROM tableName ORDER BY id ASC)
ORDER BY id DESC
这条语句是先按id升序取出前30条记录的id,然后再通过这个id取降序的前10条,即最后取得的是id升序的第30到第20条(但此时排列为降序)
若希望结果也为id升序的,可以再来一次SELECT语句的嵌套:
SELECT * FROM tableName
WHERE id IN
(SELECT TOP 10 id FROM tableName
WHERE id IN (SELECT TOP 30 id FROM tableName ORDER BY id ASC)
ORDER BY id DESC)
ORDER BY id ASC
以上语句已经测试过,肯定正确。select的结果就是按升序排列的第20到30条。当然具体顺序你自己可按需求设定,最好先在数据库环境下执行一遍看看结果。
|
可以用top,
select top 10 from...
id要递增可以用max(id)+1
select top 10 from...
id要递增可以用max(id)+1
|
如果是ORACLE可以使用ROWNUM来控制!
|
我本来想通过自动递增的id来实现,可是当我一旦删除某条纪录后,他就又不连续了。如果能够让他一直连续也可以。
alter table drop column id ; //先删除
alter table myTable add id int identity(1,1) //再建立PK,原来的数据自动填充
alter table drop column id ; //先删除
alter table myTable add id int identity(1,1) //再建立PK,原来的数据自动填充
|
UP!GZ!