如何使用sql查出第20-40条纪录

表中仅有一列:name varchar(100)
请问,怎样将20-40条纪录取出来。
mssql2005
哥哥们,都不行啊,选出来的都是错的。

第1个回答  2010-06-01
取n到m行

1.
select top m * from tablename where id not in (select top n id from tablename order by id asc/*|desc*/)

2.
select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入到临时表
set rowcount n --只取n条结果
select * from 表变量 order by columnname desc

3.
select top n * from
(select top m * from tablename order by columnname) a
order by columnname desc

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这条语句的时候报错,那是因为你的DB中间的select into/bulkcopy属性没有打开要先执行:
exec sp_dboption 你的DB名字,'select into/bulkcopy',true

5.如果表里有identity属性,那么简单:
select * from tablename where identity_col between n and m

6.SQL2005开始.可以使用row_number() over()生成行号
;with cte as
(
select id0=row_number() over(order by id),* from tablename
)
select * from cte where id0 between n to m
第2个回答  2010-06-01
select * from(select name,row_number() over(order by name) as rowNum from 表名 order by name) as t where t.rowNum between 20 and 40
第3个回答  2010-06-01
select top 20 name from tablename where name not in (select * top 20 name from tablename )
第4个回答  2010-06-01
select top 40 name from tab except select top 20 name from tab本回答被提问者采纳
第5个回答  2010-06-01
mysql or mssql?

如何使用sql查出第20-40条纪录
1.select top m * from tablename where id not in (select top n id from tablename order by id asc\/*|desc*\/)2.select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入到临时表 set rowcount n --只取n条结果 select * from 表变量 ord...

怎样用SQL语句查询以20%来分段查询数据,如查询该表中数据数量20%到40%...
我赞成的是:select * from (select top (select convert(int,count(selfid)*0.4) from s_menu) * from s_menu ) a where selfid not in(select top (select convert(int,count(selfid)*0.2) from s_menu) selfid from s_menu)不赞成:select * from t_qkxx where lsh in (select...

mysql offset limit怎么用
换句话说,这个查询会跳过第一条记录,然后返回接下来的20条女性用户记录,按时间顺序排列。如果你需要获取最新21到40条女性用户记录,只需将OFFSET调整为20(因为第一条记录已被跳过)。总结来说,OFFSET用于指定开始查询的位置,LIMIT则限制返回的记录数量。这对处理大量数据和分页展示非常有用。在实际应...

sql 查询第30条数据到40条数据怎么查啊,id有可能不是连续的
SQL语句查询逻辑过程为首先选出前40条记录,然后按照递减顺序查询后11条记录,也就是从第40条,第39条,...,第30条记录。为了还原为原来数据的递增顺序,可以再嵌套个SELECT语句。SELECT * FROM (SELECT TOP 11 * FROM (SELECT TOP 40 * FROM A ORDER BY id ASC) T ORDER BY T.id DESC)...

如何用SQL存储过程 取每二十条记录的平均值
--思路:按id排序得到记录号R,然后按(R-1)\/20分组求平均值,即1到20是一组,21到40是一组Select (r-1)\/20,AVG(code) From (Select *,ROW_NUMBER() over(order by id) as r From 表) s Group By (r-1)\/20--如果没有排序的id,则Select (r-1)\/20,AVG(code) From (Select *,...

...40条记录,有字段ID,但是ID并不连续,如何写SQL语句?
例:select * from employees e where rownum betwon 30 and 40;解释:rownum -- 数据库会为出现在查询结果里的记录进行编号,从1开始。-- 请打印表里的前5行记录 select * from employees where rownum<=5;-- 请打印表里的第6到第10行记录 select * from employees where rownum between 6...

写一条SQL语句,取出表A中第31到第40记录(SQLserver,以自动增长的ID为...
select * from tableA where ID >=31 and ID <= 40 这个是取ID值.select top 10 * from (select top 40 * from tableA order by ID) order by ID desc 这个是取按ID排序的第31到40条记录 第二个可能有点错误.. 你可以百度一下 select top 的语法 ...

例如在SQL中有个表TIME,字段FID(是主键)、NAME。共56条记录,我想查中间...
什么数据库?MySQL:SELECT * FROM time ... LIMIT 20 SQLSERVER:SELECT TOP 20 * FROM time ...

sql 如何获得表中第30-40条的记录?
SQL Server 2005中可以使用row_number()函数,但结果是经过排序后的第30-40条记录.可以使用以下语句得出默认排在第30-40条的记录.--SQL Server 2005 select top 40 * from table except select top 30 * from table --SQL Server 2000 select * from (select top 40 * from table) a where ...

写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作...
这就是个分页取值的原型...31条到40条就是10条数据 select top 10 * from 表名 where id not in (select id from 表名 )这样就可以过滤掉前面30条了,其中语句中的'id'值是用来过滤的,无论的你的ID是否连续,只要出现在子查询中的ID,主查询都会把他过滤掉,这样就可以实现31-40的查询了...

相似回答
大家正在搜