Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Rekursi Di Oracle

WITH    Ancestor(arg1, arg2) AS
        (
        SELECT  p.arg1, p.arg2
        FROM    parent p
        WHERE   arg2 NOT IN
        (
            SELECT  arg1
            FROM    parent
        )

        UNION ALL

        SELECT  p.arg1, a.arg2
        FROM    Ancestor a 
        JOIN    parent p
        ON      p.arg2 = a.arg1
        )
SELECT  *
FROM    Ancestor

Oracle hanya mendukung CTE rekursif sejak 11g Rilis 2.

Di versi sebelumnya, gunakan CONNECT BY klausa:

SELECT  arg1, CONNECT_BY_ROOT arg2
FROM    parent
START WITH
        arg2 NOT IN
        (
        SELECT  arg1
        FROM    parent
        )
CONNECT BY
        arg2 = PRIOR arg1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:bagaimana situasinya menggunakan RAISE_APPLICATION_ERROR?

  2. Top 30 Pertanyaan Manajer Serentak Paling Berguna

  3. Berapa batas ukuran untuk argumen subprogram varchar2 PL/SQL di Oracle?

  4. Perbaiki "Tidak dapat menginstal di Homebrew pada prosesor ARM di awalan default Intel (/ usr / lokal)!"

  5. Apakah ada Cara untuk menggunakan Linq ke Oracle