我需要显示我的数据库中最年轻的运动员。MIN(Athlete.Age)运行得很好,但显然我也需要它的名字。当我添加要选择的名称时,我会得到大约5个结果。如何只显示MIN(年龄)和她的名字?
select MIN(Athlete.Age), Athlete.Name
from (((Country INNER JOIN Athlete ON Country.Country_Code = Athlete.Country_Code)
INNER JOIN Athlete_event
ON Athlete.Athlete_ID = Athlete_event.Athlete_ID2)
INNER JOIN Event
ON Event.Event_ID = Athlete_event.Event_ID2)
Where Athlete.Athlete_ID = Event.Award_Gold
GROUP BY Athlete.Name;发布于 2012-10-29 23:31:14
你可以有5名年龄相同的运动员。查询将不会知道您想要哪一个。
如果数据库中有出生日期,请尝试使用它。
编辑存储年龄通常不是一个好主意,因为在一年内,它们都将是错误的。
edit2注意到,人们仍然可以共享同一个生日。
发布于 2012-10-29 23:28:06
select *
from
(
select Athlete.Age, Athlete.Name
from (((Country INNER JOIN Athlete ON Country.Country_Code = Athlete.Country_Code)
INNER JOIN Athlete_event
ON Athlete.Athlete_ID = Athlete_event.Athlete_ID2)
INNER JOIN Event
ON Event.Event_ID = Athlete_event.Event_ID2)
Where Athlete.Athlete_ID = Event.Award_Gold
order by Age
) v
where rownum=1;发布于 2012-10-29 23:28:51
在查询中添加下面这一行
HAVING MIN(Athlete.Age) = (SELECT MIN(AGE) from Athlete)因此,您的最终查询将如下所示
SELECT MIN(Athlete.Age),
Athlete.NAME
FROM (((Country INNER JOIN Athlete
ON Country.Country_Code = Athlete.Country_Code
) INNER JOIN Athlete_event
ON Athlete.Athlete_ID = Athlete_event.Athlete_ID2
) INNER JOIN Event
ON Event.Event_ID = Athlete_event.Event_ID2
)
WHERE Athlete.Athlete_ID = Event.Award_Gold
GROUP BY Athlete.NAME
HAVING MIN(Athlete.Age) = ( SELECT MIN(AGE) FROM Athlete )https://stackoverflow.com/questions/13124613
复制相似问题