Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

oracle में CONNECT-BY क्वेरी से डुप्लिकेट सबट्री हटाना

परिमित पदानुक्रम में रूट नोड हमेशा ज्ञात होना चाहिए। परिभाषा के अनुसार:http://en.wikipedia .org/wiki/Tree_structure रूट नोड एक नोड है जिसमें कोई माता-पिता नहीं है। यह जांचने के लिए कि क्या दिया गया नोड रूट नोड है, "parent_id" लें और तालिका में जांचें कि क्या इस आईडी के साथ एक रिकॉर्ड मौजूद है। क्वेरी इस तरह दिख सकती है:

SELECT id,parent_id,
  CONNECT_BY_ISLEAF leaf,
  LEVEL,
  SYS_CONNECT_BY_PATH(id, '/') Path,
  SYS_CONNECT_BY_PATH(parent_id, '/') Parent_Path
FROM tree_hierarchy th
WHERE CONNECT_BY_ISLEAF<>0
  CONNECT BY PRIOR id = PARENT_id
START WITH not exists (
      select 1 from tree_hierarchy th1 
      where th1.id = th.parent_id
  )
ORDER SIBLINGS BY ID;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या ओरेकल को संकेतों का उपयोग किए बिना किसी क्वेरी की योजना को बदलने के लिए मजबूर करने का कोई तरीका है?

  2. Oracle SQL सिंटैक्स:उद्धरित पहचानकर्ता

  3. ओरेकल स्ट्रिंग के लिए सभी टेबल सभी कॉलम खोजें

  4. Oracle SQL:तालिका नामों के स्थान पर उपयोग किए जाने वाले चर

  5. साउंडेक्स, जारो विंकलर और एडिट डिस्टेंस (UTL_MATCH) का उपयोग करके Oracle डुप्लिकेट कॉलम मानों का मिलान करना