广州总校区切换校区
复制成功
微信号:togogoi
添加微信好友, 详细了解课程
已复制成功,如果自动跳转微信失败,请前往微信添加好友
打开微信
图片
news

新闻资讯

数据库返回表中的前N行记录

发布时间: 2022-03-15

实际应用环境中,用户经常需要获取查询的前N行记录,或数据表的前N行。在MST-SQL中,定义了TOP N关键字来实现,TOP参数的作用是用来限制返回到结果集中的记录的数目,而Oracle PL/SQL不支持该关键字。

本实例对学生表STU进行查询,返回该表的前3行记录,在SQL*Plus中执行后,其返回结果如图1所示。



图1 返回表中的前N行记录


【实现代码】



【范例解析】

本实例中同样使用了游标ROWNUM来实现获取表的前N行记录。事实上,ROWNUM是对查询结果集加的一个伪列,其需要先查询到结果集。简单地说,ROWNUM是符合条件的结果集的序号,其从1开始。

需要读者注意的是,ROWNUM的使用只能用<、<=和!=等比较运算符,不能用>、>=等运算符,这是因为ROWNUM从自然数1开始,Oracle认为ROWNUM>n(n>1)这种条件是不成立的,因此使用>、>=等运算符是无法返回数据记录的。同样的,此处可以使用<=和!=运算符对上述实现SQL语句进行改写:







事实上,Oracle中经常使用ORDER BY子句与ROWNUM组合来实现获取查询的前N行记录,即先用ORDER BY子句排序,再使用ROWNUM取出排在前面的N行记录。

注意:ROWNUM从自然数1 开始,因此条件“ROWNUM=1”是成立的,其可以作为WHERE子句的条件并返回表的第1行记录,但“ROWNUM=n(n>1)”是不成立的,不能作为条件直接写在WHERE子句中,否则无法返回正确结果。

上一篇: 数据段是什么

下一篇: 数据库根据查询结果创建和复制表

<
在线咨询 ×

您好,请问有什么可以帮您?我们将竭诚提供最优质服务!