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

शीर्ष स्तरीय अभिभावक आईडी ढूँढना

एक और छोटा सीटीई :

WITH cte AS(
      SELECT *, id AS topparent 
      FROM t 
      WHERE parentid IS NULL
  UNION ALL
      SELECT t.*, c.topparent 
      FROM t JOIN cte c ON c.id = t.parentid
      WHERE t.id <> t.parentid
)
SELECT * FROM cte

यहां परीक्षण किया गया:SQL Fiddle

संपादित करें :यह लानत SQLfiddle फिर से अनुत्तरदायी है। नीचे डीडीएल कोड का परीक्षण करें

CREATE  table t (id INT, parentid INT);
INSERT INTO T VALUES (1  , NULL );
INSERT INTO T VALUES (2  , 1    );           
INSERT INTO T VALUES (3  , 2    );          
INSERT INTO T VALUES (9  , NULL );          
INSERT INTO T VALUES (5  , 9    );          
INSERT INTO T VALUES (6  , 5    );          
INSERT INTO T VALUES (25 , NULL );          
INSERT INTO T VALUES (30 , 25   );


  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. पहले ईएफ कोड में संयोजन को कैसे बदलें/सेट करें?

  3. SQL में प्रति समूह एक वृद्धिशील समूह संख्या कैसे वापस करें

  4. एक अस्थायी तालिका को भौतिक में बदलना

  5. एसक्यूएल क्वेरी महीने के प्रति दिन रिपोर्ट के लिए गिनती आइटम प्राप्त करती है?