我被困在一个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
的所有记录答案 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
;