0

我被困在一个 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 的“test”,因为对象 2 的最高级别 id 比 3。它应该只返回一个记录 ParentId = 2 用于“test”。

所以我想获取具有最大 levelId 的 Parent 的所有记录

4

3 回答 3

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 回答
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 l.objectid, l.parentid 
from level l 
inner join ( 
    select objectid, max ( levelid ) as maxlevel from level 
) as m on l.objectid = m.objectid
于 2013-08-17T10:59:17.170 回答