0

1 つの SQL クエリで行き詰まっています。誰か助けてもらえますか? 以下は私のテーブルです [LEVEL]

コラム付き

Name Varchar(50), ObjectId Int, ParentId Int, LevelId int

記録は次のとおりです。

INSERT INTO [LEVEL] (Name,ObjectId,ParentId,LevelId) VALUES('Test',1,NULL,10);
INSERT INTO [LEVEL] (Name,ObjectId,ParentId,LevelId) VALUES('3rdItem',2,1,50);
INSERT INTO [LEVEL] (Name,ObjectId,ParentId,LevelId) VALUES('1stItem',3,2,30);
INSERT INTO [LEVEL] (Name,ObjectId,ParentId,LevelId) VALUES('test',4,3,40);
INSERT INTO [LEVEL] (Name,ObjectId,ParentId,LevelId) VALUES('2ndItem',5,3,40);
INSERT INTO [LEVEL] (Name,ObjectId,ParentId,LevelId) VALUES('test tom',6,3,40);
INSERT INTO [LEVEL] (Name,ObjectId,ParentId,LevelId) VALUES('waterweg23',7,3,40);
INSERT INTO [LEVEL] (Name,ObjectId,ParentId,LevelId) VALUES('test',4,2,10);

最大レベル ID を持つ親のレコードを取得する必要があります。

ここで、レコード "test" には 2 つの親、つまり (3 & 2) があり、オブジェクト 2 は 3 よりも高いレベルの ID を持っているため、親 2 を持つ 'test' に対してのみ表示する必要があります。

したがって、親が最大 levelId を持つすべてのレコードを取得したい

4

3 に答える 3

0

あなたがこれを探しているかどうかはよくわかりません

 SELECT Name, ObjectId, ParentId, MAX(LevelId) AS LevelId FROM LEVEL GROUP BY Name;

@Prix の回答で提供されている DEMO LINK でクエリを試すことができます。私もそこで試しました;)

お役に立てれば。

于 2013-08-17T10:48:55.697 に答える
0

試す

        select lv.LevelId
          from [LEVEL] lv
    cross join ( select max(p.ParentId) pid from [LEVEL] p ) mp
         where lv.ParentId = mp.pid
             ;
于 2013-08-17T11:09:10.307 に答える