gpt4 book ai didi

mysql - 从每周编号中选择 MAX

转载 作者:行者123 更新时间:2023-11-29 22:12:34 24 4
gpt4 key购买 nike

我有一个表,是足球赛程表,每场比赛都有一个比赛 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com