ROWNUM是一个false列,它指示从表中查询的行数或联接查询结果集中的行数。它将被指定为1,2,3,4,...n,其中n是行数。通过使用ROWNUM,我们可以限制查询返回的行数。
让我们以实例库BOOKSHOP中RESOURCES模式下的EMPLOYEE表为例
该表的完整数据如下:
如果我们只想看到前五行数据,可以这样写
从资源中选择*。员工所在行& lt6;
应该注意的是,ROWNUM值不是永久分配给一行的。表中的行没有标签,因此您不能查询ROWNUM值为5的行。ROWNUM值只有分配后才会增加,初始值为1。即只有满足一行后,ROWNUM值才会增加1,否则原始值保持不变。因此,以下语句在任何时候都不能返回数据。
从资源中选择*。员工所在位置。6;
从资源中选择*。员工,其中行数= 6;
ROWNUM在控制返回结果集的大小方面起着重要的作用,可以避免在磁盘上对查询进行排序。因为ROWNUM值是在查询谓词解析之后、任何排序和聚合之前分配的。所以在排序和聚合中使用ROWNUM的时候需要注意,可能会得到意想不到的结果,比如我们想得到最老的五个员工。
从资源中选择*。员工所在位置6按出生日期排序;
上面的语句将只根据生日对EMPLOYEE表中的前五行数据进行排序和输出。不是表中的所有数据都会按照生日排序,然后输出前五行。要实现后者,需要以下语句:
选择*从(选择*从资源。员工订单(按出生日期)所在行& lt6;
或者从资源中选择前5名*。按出生日期排列的员工订单;
结果如下:
关于ROWNUM的使用,还应注意以下限制:
1.在查询中,ROWNUM可以与任何数字类型表达式进行比较和运算,但不能出现在包含OR的布尔表达式中,否则会报错;
2.Rownum只能出现在不相关的子查询中,不能在相关的子查询中使用;否则,将报告错误。
3.在无关的子查询中,ROWNUM只能实现与TOP相同的功能,因此子查询不能包含ORDER BY和GROUP BY;
4.rownum的子谓词只能是以下形式:ROWNUM op exp,exp的类型只能是立即数、参数和变量值,op∑{
1.《rownum 【干货分享】ROWNUM在达梦数据库中的使用》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《rownum 【干货分享】ROWNUM在达梦数据库中的使用》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/1578154.html