给定 Person 表包含所有球员的个人信息,有 Id(序号), Name(姓名),Height(身高) 和 TeamId(球队编号)。
+----+-------+--------+--------------+
| Id | Name | Height | TeamId |
+----+-------+--------+--------------+
| 1 | Bob | 201 | 1 |
| 2 | Jerry | 199 | 2 |
| 3 | Tim | 197 | 2 |
| 4 | Rall | 200 | 1 |
| 5 | Harry | 189 | 3 |
| 6 | Jon | 207 | 3 |
| 7 | Arran | 200 | 1 |
+----+-------+--------+--------------+
给定 Team 表包含有球队的信息,有Id(序号), TeamName(球队名称)。
+----+----------+
| Id | TeamName |
+----+----------+
| 1 | BigSun |
| 2 | King |
| 3 | Apply |
+----+----------+
下面哪条SQL可以查找出每个球队中身高最高的队员信息:
注:根据上述给定的表,可得出:Bob、Jerry、Jon分别在BigSun、King、Apply队中身高最高。
+----------+-------+--------+
| TeamName | Name | Height |
+----------+-------+--------+
| BigSun | Bob | 201 |
| King | Jerry | 199 |
| Apply | Jon | 207 |
+----------+-------+--------+
A.
select Team.TeamName as 'TeamName', Person.Name as 'Name', Height
from Person join Team on Person.TeamId = Team.Id
where (Person.TeamId, Height) in (select TeamId, max(Height) from Person group by TeamId);
B.
select d.TeamName as TeamName,e.Name as Name,max(e.Height) as Height from Person e inner join Team d on e.TeamId=d.Id group by e.TeamId;
C.
select a.TeamName TeamName,b.Name Name,b.Height Height from Team a left join (select max(Height) Height,TeamId,Name from Person group by TeamId) b on b.TeamId=a.Id;
D.
select a.TeamName TeamName,b.Name Name,b.Height Height from Team a right join (select max(Height) Height,TeamId,Name from Person group by TeamId) b on b.TeamId=a.Id;