作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个表,是足球赛程表,每场比赛都有一个比赛 ID 和一个周数 (weekNum)。我需要获取每周的最大游戏ID(本质上是获取每周的最后一场游戏)。
现在我正在使用这个:
SELECT * FROM nflp_schedule WHERE gameID = (SELECT MAX(gameID) from nflp_schedule)
它拉出了最后一场比赛......但我不知道如何拉出每周的最后一场比赛。有什么想法吗?
最佳答案
这将为您提供所有周的最大 gameID
。返回的行将按 weekNum
以升序方式排序。
SELECT weekNum, MAX(gameID) AS lastGameOfWeek
FROM nflp_schedule
GROUP BY weekNum
ORDER BY weekNum ASC
要根据上面派生的返回的 gameID 获取其他值,您需要执行子选择作为过滤条件或连接。
看起来像这样(使用子选择):
SELECT gameID, weekNum, homeScore, visitorScore
FROM nflp_schedule
WHERE gameID IN (
SELECT MAX(gameID)
FROM nflp_schedule
GROUP BY weekNum
)
ORDER BY weekNum ASC
或者像这样(使用连接):
SELECT
n.gameID AS gameID,
n.weekNum AS weekNum,
n.homeScore AS homeScore,
n.visitorScore AS visitorScore
FROM nflp_schedule AS n
INNER JOIN (
SELECT MAX(gameID) AS maxGameID
FROM nflp_schedule
GROUP BY weekNum
) AS max
ON n.gameID = max.maxGameID
ORDER BY n.weekNum ASC
您会注意到,上面的连接查询中使用的子选择看起来与之前示例中的 WHERE 子句中直接使用的子选择非常相似。这实际上只是将子选择创建的“表”应用为主表上的过滤器的一种方法。您可能想要测试这两种方法,看看在给定数据的情况下哪种方法执行得更快。
关于mysql - 从每周编号中选择 MAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31482691/
我是一名优秀的程序员,十分优秀!