我很难理解max函数是如何工作的。
这是我的桌板:
idPlayer | matchday | total
---------+----------+-------
1 | 7 | 354
---------+----------+-------
2 | 7 | 122
---------+----------+-------
3 | 7 | 672
---------+----------+-------
1 | 8 | 452
---------+----------+-------
2 | 8 | 90
---------+----------+-------
3 | 8 | 654
---------+----------+-------
我要最大总数和 idPlayer
的 matchday
8.但这个问题对我来说是个谜。
我尝试了简单的查询:
SELECT MAX(total), idPlayer FROM MD_board WHERE matchday=8
返回的最大值是正确的(654),但是 idPlayer
错误(1)。
我尝试了许多其他查询,但无法得到正确的结果:(
我对更复杂的查询不是很满意,所以,如果你能帮忙的话。。。
3条答案
按热度按时间50pmv0ei1#
有三个
idPlayer
s代表matchday = 8
! 您可能会使用允许这种错误查询的mysql,您应该知道mysql返回randomidPlayer
价值观。因此,您可以获得不同的idPlayer
明天比你今天得到的相同查询。你可能想要一个拥有最高荣誉的球员
total
以特定的方式matchday
:muk1a3rh2#
试试这个:
35g0bw713#
您的查询:
通过应用
MAX
没有GROUP BY
将数据聚合到一个结果行。您可以选择最大总数,即当天的654和当天的idplayer。但是没有一个玩家,是三个不同的玩家。根据sql标准,这是无效的sql,但是mysql让我们忽略这一点,任意返回三个播放器中的一个。如果要从总数最大的记录中获取更多数据,请再次选择这些记录: