Oracle
 sql >> डेटाबेस >  >> RDS >> 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 केवल पुनरावर्ती CTE का समर्थन करता है चूंकि 11g रिलीज 2.

पुराने संस्करणों में, CONNECT BY . का उपयोग करें खंड:

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. SQL 'कहाँ' खंड में शर्तों का निष्पादन क्रम

  2. Oracle में किसी तालिका को अद्यतन करना यदि कोई फ़ील्ड मान शून्य है और यह निर्धारित करना कि अद्यतन सफल है

  3. ADODFCMP उपयोगिता

  4. Oracle SQL - सप्ताह के अनुसार योग और समूह डेटा

  5. ऑरैकल में DATE को फ़ॉर्मेट करना