1

SQLサーバーに次のテーブルがあります

    (id,name,parentId)
    (1,nilesh,NULL)
    (2,nikhil,1)    
    (3,nitin ,2)  
    (4,Ruchi,3)

    (5,xx,NULL)
    (6,YY,5)
    (7,ZZ,6)

各グループの最後の子供を見つけたい

result: (4,Ruchi,3),(7,ZZ,6)

どうやってするの?

4

1 に答える 1

0
SELECT  *
FROM    mytable m
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    mytable mc
        WHERE   mc.parentId = m.id
        )

チェック中:

WITH    mytable AS
        (
        SELECT  *
        FROM    (
                VALUES
                (1,'nilesh',NULL),
                (2,'nikhil',1),   
                (3,'nitin' ,2),  
                (4,'Ruchi',3),
                (5,'xx',NULL),
                (6,'YY',5),
                (7,'ZZ',6)
                ) q (id, name, parentId)
        )
SELECT  *
FROM    mytable m
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    mytable mc
        WHERE   mc.parentId = m.id
        )

---

4   Ruchi   3
7   ZZ  6
于 2013-01-17T10:18:22.707 に答える