sql中如何查询出我所要的记录(例如:我想要第20条到第30条的记录,表中没有自动增长的列)

高手们。。。

(1)你的表中如果有排序字段,可以先正序取前30条,然后反序取前11条。
drop table ##data
select top 30 * into ##data from 表名 order by 列名
select top 11 * from ##data order by 列名 desc
(2)你的表中如果没有排序字段,你还不想排序以免打乱原有行的顺序,这种情况比较少见,我也可以给你一个方法,
drop table ##data1
drop table ##data2
select top 30 * into ##data1 from 表名
select top 19 * into ##data2 from 表名
select * from ##data1 as a
where not exists(select * from ##data2 as b where a.列名=b.列名 )
两种方法选的列最好是主键,或是唯一值。
温馨提示:内容为网友见解,仅供参考
第1个回答  2006-09-28
select top 20 * from (select top 30 * from 表 order by column1) order by column1 desc
第2个回答  2006-09-28
数据库里面的记录是没有什么顺序可言的,只有经过一定方法的排序之后才可以有顺序,所以不存在表中第几行数据这个说法。所以如果以一个字段为排序方式的话,可以用如下方法:

SELECT TOP 10 *
FROM 表
WHERE (NOT (排序字段 IN
(SELECT TOP 10 排序字段
FROM 表)))

当然也可以加上order by 调整记录顺序
第3个回答  2006-09-28
你有用两次查询不就行了

在SQL中怎样查询一个表的第20条数据到30条数据
create table test_order(id number , value varchar2(20));2、插入测试数据 insert into test_order select 100+level as id, 'value_'||level from dual connect by level<=100;commit;3、查询表中全量数据,select t.* from test_order t;4、编写sql,根据ID进行排序,查询第20条数据到30...

如何使用sql查出第20-40条纪录
4.如果tablename里没有其他identity列,那么:先生成一个序列,存储在一临时表中.select identity(int) id0,* into #temp from tablename 取n到m条的语句为:select * from #temp where id0 > =n and id0 <= m 如果你在执行select identity(int) id0,* into #temp from tablename这条语...

SQL语句选取某个区间的记录怎么编写
例如:写一个SQL语句,取出表S中第21~30记录(SQL server,以自动增长的ID作为主键,ID可能不连续)方法一:Select TOp10 * from S Where ID>(Select MAX(ID) from (Select Top20 ID from S ) as S)方法二:select Top10 * from S where ID NOT IN(select Top20 ID from S)...

数据库取中间几条记录
--从Table 表中取出第 m 条到第 n 条的记录:(Not In 版本)SELECT TOP n-m+1 * FROM Table WHERE (id NOT IN (SELECT TOP m-1 id FROM Table ))--从TABLE表中取出第m到n条记录 (Exists版本)SELECT TOP n-m+1 * FROM TABLE AS a WHERE Not Exists(Select * From (Select Top ...

SQL语句如何取前10条,10-30条记录?
10 sql server:读取前10条:select top (10) * from table1 where 1=1 读取后10条:select top (10) * from table1 order by id desc oracle:select * from table1 where rownum<=10 取10-30条的记录:select top 20 * from 表名 where id not in(select top 10 id from 表名)...

oracle选取user表第20-30条数据,求sql语句,顺便解释一下(●'◡...
你所说的20~30条数据是什么意思,是按照表里哪一个字段排序后的第0~30条数据,还是默认存储的0~30条数据。你的这个问题可以参考下分页查询

用SQL如何查询第几条到第几条之间的数据?
不同的数据库,写法不一样。例如我要检索,第11条到第20条,MySQL数据库的最简单:SELECT*FROM表LIMIT11,10 SQLServer的稍微折腾一些 SELECT TOP10 top20.FROM (SELECT TOP20 FROM 表 ORDERBY 排序字段DESC )AStop20 ORDERBY top20.排序字段ASC 结构化查询语言(StructuredQueryLanguage)简称SQL(发音:...

sql简单查询语句
1、首先打开数据库,建立好表。2、然后查询全体教师的教师号、姓名、职称,并分别为三列指定别名:教师号、姓名、职称,如下图所示。3、查询结果如下图所示。4、接着查询所有姓张的学生的学号和姓名,如下图所示。5、最后查询选修C1(高等数学)且成绩高于85分的学生的学号、课程号和成绩,如下图所示...

用SQL如何查询第几条到第几条之间的数据?
不同的数据库, 写法不一样。 例如我要检索,第11条到第20条,MySQL 数据库的最简单:SELECT * FROM 表 LIMIT 11, 10 SQL Server 的稍微折腾一些 SELECT TOP 10 top20.FROM (SELECT TOP 20 FROM 表 ORDER BY 排序字段 DESC ) AS top20 ORDER BY top20.排序字段 ASC 结构化查询语言(...

对比几个表的数据,取前20条记录(SQL)
你这个问题其实不复杂,不过你要注意,你3个表结构必须有相似字段才能完成 select top 20 * from (select top 20 * from (select * from 表a order by time desc) a union select top 20 * from (select * from 表c order by time desc) b union select top 20 * from (select * from...

相似回答
大家正在搜