一条Sql语句:取出表A中第31到第40记录
写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。
答:
解1: select top 10 * from A where id not in (select top 30 id from A)
解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as
普通做法
select top 10 productid
from Production.Product
where productid not in(
select top 30 productid from Production.Product
order by productid asc
) order by productid asc
临时表做法
declare @table table (id int identity(1,1),pid int)
insert @table(pid)
select productid
from Production.Product
order by productid asc
select productid from Production.Product t1
inner join @table t2 on t1.productid=t2.pid
where t2.id>30 and t2.id<=40
sqlserver2005做法
select * from
(
select productid, ROW_NUMBER() OVER(ORDER BY productid asc) as rowid
from Production.Product
)T
where T.rowid>30 and rowid<=40