首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL using Min()

SQL using Min()
EN

Stack Overflow用户
提问于 2012-10-29 23:26:41
回答 4查看 492关注 0票数 2

我需要显示我的数据库中最年轻的运动员。MIN(Athlete.Age)运行得很好,但显然我也需要它的名字。当我添加要选择的名称时,我会得到大约5个结果。如何只显示MIN(年龄)和她的名字?

代码语言:javascript
复制
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;
EN

回答 4

Stack Overflow用户

发布于 2012-10-29 23:31:14

你可以有5名年龄相同的运动员。查询将不会知道您想要哪一个。

如果数据库中有出生日期,请尝试使用它。

编辑存储年龄通常不是一个好主意,因为在一年内,它们都将是错误的。

edit2注意到,人们仍然可以共享同一个生日。

票数 4
EN

Stack Overflow用户

发布于 2012-10-29 23:28:06

代码语言:javascript
复制
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;
票数 0
EN

Stack Overflow用户

发布于 2012-10-29 23:28:51

在查询中添加下面这一行

代码语言:javascript
复制
HAVING MIN(Athlete.Age) =  (SELECT MIN(AGE) from Athlete)

因此,您的最终查询将如下所示

代码语言:javascript
复制
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 )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13124613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档