关于Oracle 的 rownum 问题,它只能用如下运算符号“<、<=、!=”,而!=使用的时候相当于<的效果。而使用“>、>=、=、between..and”运算符号时,只要开始值大于1,则就会无结果显示。因为rownum总是从1开始的,第一条不满足去掉的话,第二条的rownum 又成了1。依此类推,所以永远没有满足条件的记录。
rowid 与 rownum 虽都被称为伪列,但存在方式不一样:
rowid 是物理存在的,表示记录在表空间中的唯一位置ID,在DB中是唯一的。只要记录没被搬动过,rowid是不变的。它相对于表来说又像表中的一般列,所以,以 rowid 为条件就不会有rownum那些莫名其妙的结果出现。
rownum不能以任何基表的名称作为前缀。是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说 rownum 是对符合条件结果的序列号。
可以这样理解:rownum是一个序列,是Oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2。依次类推。
可以直接理解为:使用rownum对数据进行查询时,开始值知道大于1就会无结果显示,要想查询伪劣第3行到第9行的值就得使用嵌套的写法:
SELECT * FROM (SELECT rownum as num,ename,sal FROM emp WHERE rownum<=9 )
WHERE num>=3
注:如果子查询里rownum不起别名的话同样不能用大于符号。
分享到:
相关推荐
Oracle数据库中的`dual`表是一个特殊的虚拟表,它的存在主要为了解决SQL语句的构造问题,尤其是当需要一个简单的上下文来执行表达式或函数时。由于`dual`表只包含一行且只有一个字段,因此它常被用于测试和演示目的...
根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要关注的是Oracle SQL中的左连接操作以及在实际场景中的应用。下面将详细阐述Oracle SQL中的左连接(LEFT JOIN)、右连接(RIGHT JOIN),并结合...
- Oracle的游标声明使用 `DECLARE cursor 游标名 is select语句`,支持直接在FOR循环中使用,简化了游标操作。 - SQL Server的游标声明是 `DECLARE 游标名 cursor for select 语句`,操作游标需要显式地OPEN、...
1. 数据库连接:讲解如何在易语言中加载oraociei10.dll,并使用相关函数初始化和建立与Oracle服务器的连接。 2. SQL操作:介绍如何使用易语言构造SQL语句,执行查询、插入、更新和删除等操作。 3. 参数绑定:解释...
至于`SELECT`语句,Oracle允许将结果集作为临时表使用,无需别名,并且有`DUAL`虚表用于计算不依赖于实际表的表达式。在SQL Server中,虽然不常用,但也可以实现类似功能,只是没有内置的`DUAL`表。 总的来说,...
4. **执行SQL查询**:使用“打开数据库表”命令可以打开ORACLE数据库中的表,然后通过“发送SQL语句”命令执行SQL查询。查询可以是简单的SELECT语句,也可以是复杂的联接、子查询等。 5. **处理查询结果**:发送SQL...
Oracle 与 SQL Server 的 SQL 语法差异总结 Oracle 和 SQL Server 是两种广泛使用的关系型数据库管理系统,尽管...在 Oracle 中,可以使用虚表 dual,对于 select 计算某些与实体表无关的表达式时,要使用虚表 dual。
- 当需要展示表中的特定列时,可以使用视图来保护隐私数据。 #### 六、SELECT语句详解 - **算术运算**: - 对某一行进行算术运算:`SELECT 字段 * 10 FROM 表名;` - 在 `DUAL` 虚表中进行简单的算术运算:`SELECT...
使用视图,可以简化用户权限管理,用户可以通过视图来查询数据,而不限制用户查询表中的特定列的权限,还可以使得基表设计的更改不至于影响用户查询。 在Oracle数据库中,基于多表联合的可更新视图的实现需要符合...
不过可以rownum 虚列来实现,不过会更加麻烦. 2.Oracle 不支持偏移(offset)语法. 3.Oracle 的复制功能可能比MySQL更加健壮,不过也更加难以配置. 4.对于多个Master类型的系统,大部分用户都希望你使用更加复杂也更加...
8. 注释符号:SQL语言中,行注释使用"--",块注释使用"/*...*/"。 9. 变量类型:SQL Server中的变量分为全局变量(以"@@"开头)和局部变量(以"@"开头)。全局变量由系统维护,局部变量由用户定义并赋值。 10. ...
7.如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用Select语句。 8.使用Describe命令可以显示表的结构信息。 9.使用SQL*Plus的Get命令可以将文件检索到缓冲区,并且不执行。 10.使用Save命令可以将...
17. 视图是一个表示表的数据的数据库对象,它允许用户从一个表或一组表中通过一定的查询语句建立一个“虚表”。 18. 序列是一种可被多个用户使用的用于产生一系列唯一数字的数据库对象。尤其适合多用户环境中,可以...
Oracle数据库是世界上最流行的数据库管理系统之一,尤其在企业级应用中占据重要地位。本文将深入探讨Oracle数据库的基础知识,包括数据库概念、本地连接方法、查询语句的编写等关键点。 首先,了解数据库的基础概念...
在查询语法中,Oracle允许结果集作为临时表使用,且有特殊的虚表dual,而SQL Server没有类似的概念。 总之,Oracle和SQL Server在SQL语法上各有特点,理解这些差异对于数据库开发者和管理员来说至关重要,能够更...
7. 如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用SELECT语句。 8. 使用Describe命令可以显示表的结构信息。 9. 使用SQL*Plus的Get命令可以将文件检索到缓冲区,并且不执行。 10. 使用Save命令可以...
动态性能表不是真正的表,许多用户不能直接存取,DBA 可查询这些表,可以建立视图,给其它用户授予存取视图权。 视图的种类 ORACLE 视图可以分为多种,包括: * ALL_CATALOG:为用户可存取的全部表、视图和序列 *...
子查询是指在一个SELECT语句的WHERE子句或其他子句中使用另一个SELECT语句作为其条件的一部分。子查询可以非常灵活地处理复杂的数据检索需求。例如,可以使用子查询来找出薪资高于某个部门平均薪资的所有员工。 综...
如果需要显示单个结果,可以使用系统提供的`DUAL`虚表,如`SELECT 2*3 FROM dual;`。同时,`SELECT sysdate FROM dual;`可以获取Oracle数据库的当前系统时间。 别名的使用可以增强语句的可读性,如`SELECT ename, ...