一个表,有个自增字段。
写出一个语句,选出第41到50条的记录。
这里的自增字段可能不是连续的。
select top 10 * from A where id not in (select top 40 id from A)
如果是sql2005可以用row_number()函数
如果是sqlserver可以看一下用row_number,如果是access可以用3层top嵌套,如果是Mysql可以用limit.
--建表
/*
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
这就是你要的结果,如有疑问请留言
*/
1L正解,不过,row_number函数是05版本以上可以,2000就不行。2000的话你可以用top嵌套,也可以写存储过程。具体例子就不写了。。。