Если вы используете MySQL 8+, здесь вам пригодится функция ROW_NUMBER
:
SELECT Team_Name, cnt
FROM
(
SELECT t.Team_Name, COUNT(*) AS cnt,
ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) rn
FROM Teams t
INNER JOIN Member m
ON t.Team_Number = m.Team_Number
GROUP BY t.Team_Name
) t
WHERE rn = 1;
Если вместо этого вы хотите, чтобы все связи имели наибольшее количество очков, если две или более команд связаны, то замените ROW_NUMBER
на RANK
.
Если вам нужно сделать это по старинке, без LIMIT
или ROW_NUMBER
, то приготовьтесь к действительно ужасному запросу:
SELECT
t.Team_Name,
COUNT(*) AS cnt
FROM Teams t
INNER JOIN Member m
ON t.Team_Number = m.Team_Number
GROUP BY t.Team_Name
HAVING COUNT(*) = (SELECT MAX(cnt) FROM (SELECT COUNT(*) AS cnt
FROM Teams t
INNER JOIN Member m
ON t.Team_Number = m.Team_Number
GROUP BY t.Team_Name) t );