sql - 在数据库中的每个团队中查找最年轻的
问题描述
我有一张球员桌和一张球队桌,我正在努力寻找每支球队中最年轻的球员。我能找到最年轻的球员:
SELECT lname, fname, dob, position
FROM players
WHERE dob = (SELECT MAX(dob) FROM players);
当我尝试包含团队表时,我收到的数据与上面相同,这是总体上最年轻的玩家。我对此很陌生,所以我仍在尝试了解多行子查询。如果我按团队名称排序,我将收到相同的输出。团队表是否还需要另一个 SELECT 语句?如果是这样,我该怎么做?将运算符从 IN 更改为 ALL 或 ANY 也会给我相同的输出。
SELECT lname, fname, dob, position, name
FROM players p JOIN teams t ON p.team_id = t.id
WHERE dob IN (SELECT MAX(dob) FROM players);
如果有帮助,我正在使用 LiveSQL。
解决方案
您甚至不需要球队表来获取球员信息。一个相关的子查询就足够了:
SELECT p.lname, p.fname, p.dob, p.position
FROM players p
WHERE p.dob = (SELECT MAX(p2.dob)
FROM players p2
WHERE p2.team_id = p.team_id
);
如果您愿意,可以引入 aJOIN
来获取团队名称:
SELECT p.lname, p.fname, p.dob, p.position, t.name
FROM players p JOIN
teams t
ON p.team_id = t.id
WHERE p.dob = (SELECT MAX(p2.dob)
FROM players p2
WHERE p2.team_id = p.team_id
);
推荐阅读
- mongodb - 使用 Logstash 过滤 MongoDB 文档的深层字段
- c++ - C++ 概念:如何使用“概念”来检查模板结构的属性?
- python - 有没有办法随机化主循环中子循环的顺序?
- node.js - 如何使用函数写入我的 Firestore 数据库?
- java - 通过 Post 将 BLOB 发送到 Java 后端
- javascript - 如何在 html 表格中仅更改最小单元格的颜色
- c# - 使用 Github 的 GraphQL 列出所有标签并搜索发布
- asp.net-mvc - 公共网络上的 ADFS 身份验证
- javascript - 获取元素目标内部文本的最佳方法
- html - There is no result of my html file in any browser