cari
Rumahpangkalan dataOracleBagaimana untuk menanyakan nod anak secara rekursif dalam Oracle

Dalam Oracle, anda boleh menggunakan pernyataan pilih untuk menanyakan nod anak secara rekursif Fungsi pernyataan ini adalah untuk melakukan pertanyaan ringkas pada data jadual MENGIKUT keadaan SEBELUM 2 DI MANA Syarat 3".

Bagaimana untuk menanyakan nod anak secara rekursif dalam Oracle

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Oracle 11g, komputer Dell G3.

Cara oracle secara rekursif menanyakan nod anak

Struktur tatabahasa

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

Syarat 1: Ia adalah pernyataan kelayakan nod akar Sudah tentu, syarat kelayakan boleh santai untuk mendapatkan berbilang akar, iaitu, berbilang pokok dalam hubungan sambungan, selain penyenaraian, ungkapan lajur juga dibenarkan. Klausa START WITH adalah pilihan dan digunakan untuk mengenal pasti nod yang digunakan sebagai nod akar struktur pepohon carian. Jika klausa ini ditinggalkan, ini bermakna semua baris yang memenuhi syarat pertanyaan digunakan sebagai nod akar.

Syarat 2: Ia adalah syarat sambungan, di mana PRIOR digunakan untuk mewakili rekod sebelumnya Contohnya, CONNECT BY PRIOR STUDENT_ID = GRADE_ID, yang bermaksud STUDENT_ID rekod sebelumnya ialah GRADE_ID ini. rekod, iaitu bapa rekod ini adalah rekod sebelumnya. Klausa CONNECT BY menunjukkan bahawa setiap baris data akan diambil dalam susunan hierarki dan menentukan bahawa data dalam jadual akan disambungkan ke dalam hubungan berstruktur pepohon. Operator PRIOR mesti diletakkan di hadapan salah satu daripada dua lajur perhubungan gabungan. Untuk perhubungan induk-anak antara nod, pengendali PRIOR mewakili nod induk pada satu sisi dan nod anak di sisi lain, dengan itu menentukan sama ada susunan struktur pokok dicari adalah atas ke bawah atau bawah ke atas.

Syarat 3: Ia adalah keadaan penapisan, digunakan untuk menapis rekod yang dikembalikan.

Nota:

1, CONNECT BY PRIOR digunakan dalam pertanyaan berstruktur;

2, peranan MULAKAN DENGAN... CONNECT BY PRIOR..., Ringkasnya , ia adalah untuk menyimpan struktur pokok dalam jadual.

Melintasi nod anak ke nod akar.

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

Melintasi nod akar nod anak (tidak termasuk nod akar).

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

Melintasi melalui nod akar Nod anak (termasuk nod akar).

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

Anda boleh menanyakan tahap melalui kata kunci tahap.

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

Catatan:

mulakan dengan .. Dalam penggunaan .connect by, yang berikut bermula dengan ialah benih rekursif.

Benih rekursi ialah tempat rekursif bermula "sebelumnya" selepas disambungkan oleh Jika lalai: hanya baris permulaan yang memenuhi syarat boleh ditanya dan tiada pertanyaan rekursif akan dilakukan;

Medan yang diletakkan selepas sambung dengan sebelumnya adalah berkaitan dan menunjukkan arah pertanyaan.

Latihan: Dapatkan nod teratas melalui nod anak

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

Struktur jadual

DEPTID PAREDEPTID NAME
NUMBER NUMBER CHAR (40 Byte)

id Jabatan Id jabatan induk (kepunyaan id jabatan mana) Nama jabatan

Tutorial yang disyorkan: "Tutorial Video Oracle"

Atas ialah kandungan terperinci Bagaimana untuk menanyakan nod anak secara rekursif dalam Oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
什么是oracle asm什么是oracle asmApr 18, 2022 pm 04:16 PM

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

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怎么查询端口号Oracle怎么查询端口号May 13, 2022 am 10:10 AM

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

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

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

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)