首页 新闻 会员 周边 捐助

紧急请教SQL语句书写

0
悬赏园豆:20 [已解决问题] 解决于 2010-12-28 21:17

一个表,有个自增字段。

写出一个语句,选出第41到50条的记录。

这里的自增字段可能不是连续的。

问题补充: 看到大家的解答,真的很感谢。。。 自己也在网上找了找。 好像有了两个方法: 一:就是大家已经给出的答案: select top 10 * from Ordertable where id not in (select top 40 from Ordertable group by id) order by id 二:用 WITH AS 和 ROW_NUMBER 语句如下 with temptable as (select SalesOrderID,Orderdate, row_number() over (order by Orderdate)) as Rownumber from Ordertable) select * from Ordertable where Rownumber between 41 and 50
doo的主页 doo | 初学一级 | 园豆:8
提问于:2010-12-27 20:21
< >
分享
最佳答案
0

select top 10 * from A where id not in (select top 40 id from A)

如果是sql2005可以用row_number()函数

收获园豆:4
死白的man | 老鸟四级 |园豆:2135 | 2010-12-28 09:47
其他回答(3)
0

如果是sqlserver可以看一下用row_number,如果是access可以用3层top嵌套,如果是Mysql可以用limit.

收获园豆:5
I,Robot | 园豆:9783 (大侠五级) | 2010-12-27 20:37
0

--建表
/*

create table inentitytest(name)(name)(id int identity(1,1),name varchar(10));

--插入测试数据
insert into inentitytest(name) values('a');
insert into inentitytest(name) values('b');
insert into inentitytest(name) values('c');
insert into inentitytest(name) values('d');
insert into inentitytest(name) values('e');
insert into inentitytest(name) values('f');
insert into inentitytest(name) values('g');
insert into inentitytest(name) values('h');
insert into inentitytest(name) values('i');
insert into inentitytest(name) values('j');
*/
--select * from inentitytest order by id
--
删除一些,达到id不连续的目地,可以用id对2和5求余,把结果为0的删除
delete from inentitytest where ID%5=0;

select top 10 * from inentitytest where id not in (select top 40 id from inentitytest order by id) order by id

/*
结果:
id name
----------- ----------
56 e
57 f
58 g
59 h
61 j
62 a
63 b
64 c
66 e
67 f

这就是你要的结果,如有疑问请留言
*/

 

收获园豆:10
artwl | 园豆:16736 (专家六级) | 2010-12-27 23:41
0

1L正解,不过,row_number函数是05版本以上可以,2000就不行。2000的话你可以用top嵌套,也可以写存储过程。具体例子就不写了。。。

收获园豆:1
顾晓北 | 园豆:10898 (专家六级) | 2010-12-28 09:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册