在SQL中怎样查询一个表的第20条数据到30条数据

在SQL中怎样查询一个表的第20条数据到30条数据,第1张

1、创建测试表,

create table test_order(id number , value varchar2(20));

2、插入测试数据

insert into test_order select 100+level as id, 'value_'||level from dual connect by level<=100;

commit;

3、查询表中全量数据,select t from test_order t;

4、编写sql,根据ID进行排序,查询第20条数据到30条数据;

 select from (select t, row_number() over(order by id) rn from test_order t )

  where rn >= 20 and rn <= 30;

用TOP PRECENT

例如:

SELECT TOP 20 PERCENT SID,SNM,SSC FROM ST ORDER BY SID

GO

从ST表按学号排列后选择前20%的学生学号,姓名,成绩。

--Mark表为提供数据的表,TB_1表为待出入数据的表

declare @count int

set @count = 1

select @count = count(course) from Mark

--创建临时表

select identity(int,1,1) as TempID,course as TempCourse into #TempTB from Mark

declare @index int

set @index = 1

declare @course nvarchar(50)

--循环把Mark表course字段的数据出入TB_1表的remark字段

while(@index<=@count)

begin

select @course = TempCourse from #TempTB where TempID = @index

update TB_1 set remark = @course where remark is null and id = (select top 1 id from TB_1 where remark is null order by id)

set @index = @index + 1

end

--删除临时表

drop table #TempTB

试一下这个吧。

SQL Server 2008 与以下版本, 可这么写:

SELECT top 10 FROM

(

select top 20 from News where news_class_id=109 order by news_id desc

) top_20

order by news_id

SQL Server 2012 可这么写:

select from News where news_class_id=109 order by news_id desc

OFFSET

10 ROWS

FETCH NEXT

10 ROWS ONLY;

用MYSQL数据库就容易了,语法格式是:

SELECT LIMIT 10,10

上面的LIMIT 10,10表示从第10条开始,取10条,这个语法支持使得MYSQL特别适合做INTERNET应用,因为INTERNET上经常有这样的需求,比如论坛帖子、邮件分页等。

我不知道ACCESS、MS SQL SERVER是否有类似功能的语法,如果没有的话,你要获取10~20就SELECT TOP 20,然后先rsmovenext10次。但是这样很不爽,万一我需要第10000~10010条,那就先跳过1万条,是否需要许多时间呢,没有MS的环境,无法测试。

补充:

你不等等高手来回答,要用我的笨办法呀,我给你的脚本修改如下:

<%

Set rs=ServerCreateObject("ADODBRecordset")

sql="select top 20 from [User]"

rsopen sql,conn,1,1

if rseof and rsbof then

responseWrite("没有企业信息!")

else

'跳过前10行

for i=1 to 10

rsmovenext

next

do while not rseof

%>

<tr>

<td><%=rs("companyname")%></td>

</tr>

<%

rsmovenext

loop

end if%>

--不知道你要求的精度是什么样的,如果只是天可以这样:

;WITH test AS

(

select TOP 20 time1 AS fOutTime from jiage ORDER BY fID 

)

SELECT  avg(YEAR(time1))  FROM test

以上就是关于在SQL中怎样查询一个表的第20条数据到30条数据全部的内容,包括:在SQL中怎样查询一个表的第20条数据到30条数据、sql语句 如何查找各课程前百分之20的学生的学号、SQL Server 2000查询某数据库中所有>100行记录的表的前20行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9570427.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存