获取sql中具有最高级别值的父记录

时间:2013-08-17 09:52:10

标签: mysql sql

我被困在一个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。 对于'test',它应该只返回一条记录ParentId = 2.

所以我想获得父级有max levelId

的所有记录

3 个答案:

答案 0 :(得分:0)

我不确定你是否在寻找这个

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

您可以在他的回答中尝试@Prix提供的DEMO LINK中的查询。我也在那里试过;)

希望这有帮助。

答案 1 :(得分: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

答案 2 :(得分:0)

        select lv.LevelId
          from [LEVEL] lv
    cross join ( select max(p.ParentId) pid from [LEVEL] p ) mp
         where lv.ParentId = mp.pid
             ;