多个最高记录mysql

时间:2013-08-13 14:36:59

标签: mysql max

有两行的最高值为5,但下面的查询只返回最后一个最高记录...如何获得具有最高成员值的所有行?

我可以使用max is where子句plz帮助吗?

SELECT teamcode,MAX(member) AS members FROM(
    SELECT t.`teamcode` AS teamcode,
    COUNT(*) AS member
    FROM `users` u
    JOIN teams t
    ON u.teamcode=t.tm_id
    GROUP BY `teamcode`
) AS maxcount

如何获得所有最高价值?

3 个答案:

答案 0 :(得分:1)

从WHERE子句中获取具有最大值的行可能会更好,例如: WHERE member = MAX(member)而不是在SELECT子句中尝试这样做。

编辑: 我在这里扩展了我对SQL的了解,但试试这个:
SELECT teamcode, member
FROM(
SELECT t.'teamcode' AS teamcode, COUNT(*) AS member
FROM 'users' u JOIN teams t ON u.teamcode = t.tm_id
GROUP BY 'teamcode'
HAVING member = MAX(member)
) AS maxcount

答案 1 :(得分:1)

首先,因为您只想使用团队代码进行统计:您不需要使用JOIN! 但是,你需要一个帮助表。

  SELECT teamcode,
         COUNT(*) as members
    FROM users
GROUP BY teamcode
  HAVING COUNT(*) = (   SELECT COUNT(*)
                          FROM users
                      GROUP BY teamcode
                      ORDER BY COUNT(*) DESC
                         LIMIT 1             );

SQL-Fiddle,如果您愿意的话。

二手参考: SQL Query of Using Functions - How to get MAXIMUM Count of the list

答案 2 :(得分:0)

如果您不仅需要查询中的最大值,最好使用GROUP BY。

SELECT teamcode,MAX(member) AS members FROM(
    SELECT t.`teamcode` AS teamcode,
    COUNT(*) AS member
    FROM `users` u
    JOIN teams t
    ON u.teamcode=t.tm_id
    GROUP BY `teamcode`
) AS maxcount
GROUP BY teamcode

如果你想要两个五个最高值,你应该使用“LIMIT”一词。