请教一种sql语句

来源:百度知道 编辑:UC知道 时间:2024/07/02 11:24:01
有这样的表A,其中有300条记录,由id来唯一确定,每个id都不同,但是未必是连续的,有可能中断,比如1,2,3,6,8,10.。。。。。等等。
如果这些记录已经按id排好顺序,请问如果想把其中第21条到第30条记录显示出来,这样的sql语句应该怎么写?谢谢

从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 m-1 * From TABLE order by id) b Where b.id=a.id )
Order by id

--m为上标,n为下标,例如取出第8到12条记录,m=8,n=12,Table为表名

Select Top n-m+1 * From Table
Where Id>(Select Max(Id) From
(Select Top m-1 Id From Table Order By Id Asc) Temp)
Order By Id Asc

select top 10 *
from a
where id not in (select top 20 id from a order by id)
首先,子查询 中查询出前20行记录
用id 来匹配,不在这前20行中的记录得以输出。
在外层查询中只允许输出匹配后的表的前10行,正好就是21到30行。呵呵

sql2005下有row_number()函数
select row_number() over(order by id) as list_id,* from a
where list_id>20 and list_id<31
如果是sql2000,基本上就只能top...not in了,not in是效率最低的语句
select top 10 *
from a
wh