有两行的最高值为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
如何获得所有最高价值?
答案 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”一词。