찾다
데이터 베이스OracleOracle에서 하위 노드를 재귀적으로 쿼리하는 방법

Oracle에서는 select 문을 사용하여 하위 노드를 재귀적으로 쿼리할 수 있습니다. 이 문의 기능은 테이블 데이터에 대해 간단한 쿼리를 수행하는 것입니다. 구문은 "SELECT * FROM table name START WITH 조건 1 CONNECT BY PRIOR 조건 2입니다. WHERE 조건 3".

Oracle에서 하위 노드를 재귀적으로 쿼리하는 방법

이 튜토리얼의 운영 환경: Windows 10 시스템, Oracle 11g 버전, Dell G3 컴퓨터.

oracle은 어떻게 하위 노드를 재귀적으로 쿼리합니까?

문법 구조

SELECT ... FROM    + 表名  START WITH + 条件1 CONNECT BY PRIOR + 条件2  WHERE  + 条件3

조건 1: 루트 노드에 대한 한정문입니다. 물론, 한정 조건을 완화하여 여러 루트 노드, 즉 여러 트리를 얻을 수 있습니다. 연결 관계에서는 컬럼 외에 컬럼 표현식도 허용됩니다. START WITH 절은 선택 사항이며 검색 트리 구조의 루트 노드로 사용되는 노드를 식별하는 데 사용됩니다. 이 절이 생략되면 쿼리 조건을 만족하는 모든 행이 루트 노드로 사용된다는 의미입니다.

조건 2: 이전 레코드를 나타내기 위해 PRIOR을 사용하는 연결 조건입니다. 예를 들어 CONNECT BY PRIOR STUDENT_ID = GRADE_ID는 이전 레코드의 STUDENT_ID가 이 레코드의 GRADE_ID라는 의미입니다. , 이 레코드의 아버지는 이전 레코드입니다. CONNECT BY 절은 데이터의 각 행이 계층적 순서로 검색됨을 나타내고 테이블의 데이터가 트리 구조 관계로 연결됨을 지정합니다. PRIOR 연산자는 조인 관계의 두 열 중 하나 앞에 배치되어야 합니다. 노드 간 부모-자식 관계의 경우 PRIOR 연산자는 한쪽은 부모 노드, 다른 쪽은 자식 노드를 나타내어 트리 구조를 검색하는 순서가 하향식인지 상향식인지를 결정합니다.

조건 3: 반환된 레코드를 필터링하는 데 사용되는 필터링 조건입니다.

참고:

1. CONNECT BY PRIOR는 구조화된 쿼리에 사용됩니다.

2. START WITH... CONNECT BY PRIOR...의 기능은 테이블 내부와 외부에 트리 구조를 저장하는 것입니다.

하위 노드를 통해 루트 노드를 탐색합니다.

select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid

루트 노드를 통해 하위 노드를 탐색합니다(루트 노드 제외).

select * from persons.dept start with paredeptid=0 connect by prior deptid=paredeptid

루트 노드(루트 노드 포함)를 통해 하위 노드를 탐색합니다.

select * from persons.dept start with deptid=0 connect by prior deptid=paredeptid

레벨 키워드를 통해 전달될 수 있습니다. 레벨 쿼리.

select a.*,level from persons.dept a start with paredeptid=0 connect by prior deptid=paredeptid

참고:

start with...사용법에 따라 연결, start with 뒤에 오는 것은 재귀 시드입니다.

재귀의 시드는 연결 이후의 "이전"입니다. 기본값인 경우 조건을 충족하는 시작 행만 쿼리할 수 있으며 재귀 쿼리는 수행되지 않습니다. 사전에 따라 관련성이 있으며 쿼리 방향을 나타냅니다.

연습: 하위 노드를 통해 최상위 노드 가져오기

select FIRST_VALUE(deptid) OVER (ORDER BY LEVEL DESC ROWS UNBOUNDED PRECEDING) AS firstdeptid from persons.dept start with deptid=76 connect by prior paredeptid=deptid

테이블 구조

DEPTID PAREDEPTID NAME
NUMBER NUMBER CHAR (40 Byte)

Department id 상위 부서 ID(소속 부서 ID) 부서 이름

추천 튜토리얼: "

Oracle Video Tutorial

"

위 내용은 Oracle에서 하위 노드를 재귀적으로 쿼리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
oracle怎么查询所有索引oracle怎么查询所有索引May 13, 2022 pm 05:23 PM

方法:1、利用“select*from user_indexes where table_name=表名”语句查询表中索引;2、利用“select*from all_indexes where table_name=表名”语句查询所有索引。

什么是oracle asm什么是oracle asmApr 18, 2022 pm 04:16 PM

oracle asm指的是“自动存储管理”,是一种卷管理器,可自动管理磁盘组并提供有效的数据冗余功能;它是做为单独的Oracle实例实施和部署。asm的优势:1、配置简单、可最大化推动数据库合并的存储资源利用;2、支持BIGFILE文件等。

oracle全角怎么转半角oracle全角怎么转半角May 13, 2022 pm 03:21 PM

在oracle中,可以利用“TO_SINGLE_BYTE(String)”将全角转换为半角;“TO_SINGLE_BYTE”函数可以将参数中所有多字节字符都替换为等价的单字节字符,只有当数据库字符集同时包含多字节和单字节字符的时候有效。

Oracle怎么查询端口号Oracle怎么查询端口号May 13, 2022 am 10:10 AM

在Oracle中,可利用lsnrctl命令查询端口号,该命令是Oracle的监听命令;在启动、关闭或重启oracle监听器之前可使用该命令检查oracle监听器的状态,语法为“lsnrctl status”,结果PORT后的内容就是端口号。

oracle怎么删除sequenceoracle怎么删除sequenceMay 13, 2022 pm 03:35 PM

在oracle中,可以利用“drop sequence sequence名”来删除sequence;sequence是自动增加数字序列的意思,也就是序列号,序列号自动增加不能重置,因此需要利用drop sequence语句来删除序列。

oracle怎么查询数据类型oracle怎么查询数据类型May 13, 2022 pm 04:19 PM

在oracle中,可以利用“select ... From all_tab_columns where table_name=upper('表名') AND owner=upper('数据库登录用户名');”语句查询数据库表的数据类型。

oracle查询怎么不区分大小写oracle查询怎么不区分大小写May 10, 2022 pm 05:45 PM

方法:1、利用“LOWER(字段值)”将字段转为小写,或者利用“UPPER(字段值)”将字段转为大写;2、利用“REGEXP_LIKE(字符串,正则表达式,'i')”,当参数设置为“i”时,说明进行匹配不区分大小写。

Oracle怎么修改sessionOracle怎么修改sessionMay 13, 2022 pm 05:06 PM

方法:1、利用“alter system set sessions=修改后的数值 scope=spfile”语句修改session参数;2、修改参数之后利用“shutdown immediate – startup”语句重启服务器即可生效。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구