mssql中,如何返回指定第几到第几条之间的记录

来源:百度知道 编辑:UC知道 时间:2024/09/22 13:32:01
用top可以返回前n条,但如果一个查询结果有100条数据
我只想返回第20-30条之间的数据,可以实现吗

如果可以实现,那我指明返回的是第90-110条时,会报错吗,如何避免这样的错误(另加20分)

第20-30条:
select top 30 * from tablename a where a.id not in(select top 20 id from tablename)
你是想用变量代替TOP 后面的数字吧?那要看你是在前台组成语句还是在后台了。
在前台:
SQLSTR="select top "+大号变量+" * from tablename a where a.id not in(select top "+小号变量+" id from tablename)";
在后台要用动态SQL语句才行
exec ('select top '+@大号变量+' * from tablename a where a.id not in(select top '+@小号变量+' id from tablename')
============================
这样通用性更强一些:
DECLARE
@SQLSTR VARCHAR(1000),
@TABLENAME VARCHAR(30),
@MAXLINE INT,
@MINLINE INT,
@IDFIELD
SET @SQLSTR='select top '+CAST(@line AS VARCHAR)+' * from '+@tablename+' where '+@idfield+' in (select top '+CAST(@MAXLINE AS VARCHAR)+' '+@idfield+' from '+@TABLENAME+' a where '+@idfield+' not in (select top '+CAST(@MINLINE-1 AS VARCHAR)+' '+@idfield+' from '+@tablename+'))'