这是一个有效的 SQL 声明吗?

Is this a valid SQL statement?

问题:哪支球队拥有最年轻的运动员,那名运动员叫什么名字?

SELECT athleteFirstName, athleteLastName, teamName
FROM team t JOIN athlete a ON t.teamId = a.teamId
WHERE athleteDateOfBirth = (SELECT MAX(athleteDateOfBirth)
                            FROM team JOIN athlete ON team.teamId = athlete.teamId)
GROUP BY teamName, athleteFirstName, athleteLastName;

所以我连接了两个表并试图解决这个问题。我已经尝试过 DATEDIFF,但我得到的只是错误。许多不同的错误。

那个子查询行得通吗?

比如,它是否有意义,或者因为我没有使用过 DATEDIFF,我的老师会把它标记为不正确吗?如果我需要在子查询中添加 GROUP BY 语句,我也有点困惑。

试试这个找到最小的:

在 sql 服务器中:

SELECT athleteFirstName, athleteLastName, teamName 
FROM team t JOIN athlete a ON t.teamId = a.teamId
where athleteDateOfBirth= (select top 1 athleteDateOfBirth from athlete 
order by athleteDateOfBirth desc )

在mysql中:

SELECT athleteFirstName, athleteLastName, teamName 
FROM team t JOIN athlete a ON t.teamId = a.teamId
where athleteDateOfBirth= (select athleteDateOfBirth from athlete 
order by athleteDateOfBirth desc limit 1)

试一试

SELECT athleteFirstName,
       athleteLastName,
       teamName
FROM team t
JOIN athlete a ON t.teamId = a.teamId
WHERE athleteDateOfBirth =
    (SELECT TOP(1) athlete.athleteDateOfBirth
     FROM athlete
     ORDER BY athlete.athleteDateOfBirth ASC)
GROUP BY teamName,
         athleteFirstName,
         athleteLastName;

正在将子查询中的 table 更改为 athlete

SELECT athleteFirstName, athleteLastName, teamName
FROM team t JOIN athlete a ON t.teamId = a.teamId
WHERE athleteDateOfBirth = (SELECT MAX(athleteDateOfBirth) FROM athlete)

我认为您可以使用 LimitTOP 关键字来实现它。对于 SQL 服务器使用 top,对于 MYSql/PostgreSQL 使用 Limit
SQL 服务器:

Select top 1 t.TName AS TeamName,a.AName AthleteName,a.athleteDateOfBirth from teamT as t
INNER JOIN athleteT AS a ON t.TeamID=a.TeamID
ORDER BY athleteDateOfBirth DESC;

Link: Demo Link

MySQL / PostgreSQL:

Select t.TName AS TeamName,a.AName AthleteName,a.athleteDateOfBirth from teamT as t
INNER JOIN athleteT AS a ON t.TeamID=a.TeamID
ORDER BY athleteDateOfBirth DESC
LIMIT 1;

LINK: Demo Code.