首页 > 数据库 >Oracle中的伪列

Oracle中的伪列

时间:2023-04-07 11:45:16浏览次数:40  
标签:level 伪列 查询 emp Oracle rownum where select

一. rownum

1.rownum等于某值时的查询条件:只有rownum = 1,有数据显示。rownum = n(n>2)没有数据,如果想要实现,则可以搭配子查询使用

select a.*,rownum from emp where rownum =1;

2.rownum大于某值时的查询条件:Oracle对于rownum >= n这个条件是不成立的,即使是n =1,也没有任何数据返回。想要实现这一功能,需要利用子查询来完成。

select * from (select a.*,rownum rn from emp a) b where b.rn >=3;

3.rownum小于某值时的查询条件:rownum <= n 是成立的,所以有返回值。

select a.*,rownum from emp a where rownum <=3;

4.rownum和order的搭配使用:rownum在和order搭配使用时,一定要注意顺序,因为rownum的优先级是大于order的。所以在两者搭配使用时,要做到先排序,再取行号。

select * from (select a.* from emp a order by sal) b where rownum <= 3;

5.使用rownum分页查询

# 假设每页n行,a为页数
select * from (select a.*,rownum as rn from emp a) b where rn between &a*n-(n-1) and &a*n;

二. rowid

1. 使用rowid来删除重复数据

# 准备数据,创建一个空表emp1,结构和emp表一样,将emp表中10部门的数据重复插入到emp1表中
insert all when deptno = 10 into emp1(empno,ename,job,mgr,hiredate,sal,comm,deptno) 
values(empno,ename,job,mgr,hiredate,sal,comm,deptno)
select * from emp;
# 利用聚合函数和rowid删除重复数据
delete from emp1 where rowid not in (select max(rowid) from emp1 group by deptno); 

 三. level

1. 与connect by结合使用实现树形查询

level在其中的作用是控制节点和显示节点深度,而且level是自增的,所以需要connect by来控制level的取值范围。

语法:

select 

from table_name

where [level = ?]  --控制节点

start with condition  --选择开始的节点

connect by prior 上级=下级/下级=上级 

# 查询出雇员表中KING的下级的下级
select ename,level from emp where level = 3 start with ename = 'KING' connect by prior empno = mgr order siblings by sal;

2. 利用level自增的性质,显示多条数据

# 显示1-100之间的所有偶数
seelct level from dual where mod(level,2) = 0 connect by <=100;

3. 与日期函数结合使用,打印出符合条件的日期

# 查询本年所有的星期一
select next_day(trunc(sysdate,'yyyy')-1,'星期一') + (level-7)
from dual
where mod(level,7) = 0
connect by level <= to_char(last_day(add_months(trunc(sysdate,'yyyy'),11)),'ddd');

  

 

  

 

 

 

  

 

  

标签:level,伪列,查询,emp,Oracle,rownum,where,select
From: https://www.cnblogs.com/zhouyang-123/p/17286663.html

相关文章

  • Qt5.15编译Oracle 19c驱动
     一、下载Oracle 19c驱动,需要下载两个包,注意分x86和x64x86下载地址:InstantClientforWindows32-bit(oracle.com) ① instantclient-basic-nt-19.18.0.0.0dbru.zip ② instantclient-sdk-nt-19.18.0.0.0dbru.zipx64下载地址:InstantClientforMicrosoftWindows(x......
  • Oracle 11g asm中不同au size下datafile的au分布初探
    今天有朋友问11g中asm的ausize不为1m的情况下,datafile的au分布是怎么样的?通过10g的方式去kfedread,发现不对了,原帖地址:~~【高手请进】在oracle11g中通过kfed找到ASMAU空间分布信息?下午花了一点时间研究了一下,其中还有些没有明白,不过基本上搞清楚了,下面是简单的实验过程:开始我......
  • oracle如何恢复被误误删除的pdb
    最近太忙,一直没时间写blog;加上前段时间blog空间除了点问题,因此整体迁移到阿里云并且重新备案了。后续有时间我会定期更新,保持写作习惯,不能把技术荒废了。这是去年底某客户的一个case,误删除了6个pdb且带了includingdatafiles参数;这是一个非常复杂的恢复;据说用户开始找了国内很多恢......
  • oracle之检查点(Checkpoint)
    转载于:oracle之检查点(Checkpoint)-张冲andy-博客园(cnblogs.com)检查点是一个数据库事件,它把修改数据从高速缓存写入磁盘,并更新控制文件和数据文件。检查点分为三类:1)局部检查点:单个实例执行数据库所有数据文件的一个检查点操作,属于此实例的全部脏缓存区写入数据文件。触发......
  • 《oracle马拉松》plsql篇
    安装和配置安装plsql的安装比较简单,根据系统,安装64位或32位的plsql,一路next即可。配置(Instantclient)0、安装前注意。instantclient和plsql的版本要对应,64位plsql对应64位的instantclient。否则,报错Initializationerror不能初始化oci.dl。1.下载,解压InstantClient压......
  • oracle data guard集群之参数文件详解
    #############  1.log_archive_config该参数必须显式声明主备库的db_unique_name,且主库的db_unique_name永远放在第一位。其他备库的跟随其后。该参数适用于:主库、物理备库、逻辑备库、快照备库。log_archive_config='dg_config(db_unique_name,db_unique_name,.........
  • Win10 安装Oracle21c 教程
    Win10安装Oracle21c教程1:(官方)下载地址https://www.oracle.com/database/technologies/oracle21c-windows-downloads.htmlOracleDatabase21c (21.3)OracleDatabase21c (21.3)forMicrosoftWindowsx64(64-bit)DownloadDescriptionWINDOWS.X64_2130......
  • oracle 中Version counts高原因分析
    (18条消息)Oracle高Versioncounts问题说明_Dave的博客-CSDN博客主要查看视图v$sqlareav$sql_shared_cursor ......
  • Linux静默安装Oracle21C
    Linux静默安装Oracle21C1、修改主机名及配置hosts[root@localhost~]#hostname #查看主机名[root@localhost~]#hostnameoracledb #修改主机名[root@localhost~]#vim/etc/hosts #修改hosts[root@localhost~]#cat/etc/hosts2、关闭selinux和防火墙[root@l......
  • Linux centos7虚拟机安装Oracle11g完全教程
                      Linuxcentos7虚拟机安装Oracle11g完全教程Linux下安装Oracle相比windows安装Oracle要显得繁琐很多,繁琐在前期准备工作很多,Oracle有两次安装前的检查,前期的准备工作其实也就是围绕这两次检查来做的。第一次检查:Oracle安装程......