【问题标题】:mysql only max of count with several maxmysql 只有最大的计数,有几个最大值
【发布时间】:2018-08-06 19:12:19
【问题描述】:

我正在寻找一个查询,只得到最大的。

SELECT results.playerid, 
       username, 
       Count(*) AS count 
FROM   results 
       LEFT JOIN players 
              ON results.playerid = players.playerid 
WHERE  points = 5 
GROUP  BY playerid 
ORDER  BY count DESC 

结果:

+-----------+-----------+-------+
| playerID  | username  | count |
+-----------+-----------+-------+
| 1         | Lorem     | 2     |
| 2         | Ipsum     | 2     |
| 3         | Dolor     | 1     |
+-----------+-----------+-------+

预期输出:

+-----------+-----------+-------+
| playerID  | username  | count |
+-----------+-----------+-------+
| 1         | Lorem     | 2     |
| 2         | Ipsum     | 2     |
+-----------+-----------+-------+

如果只有一个最大的就没有问题了。

有什么建议吗?

小提琴:http://sqlfiddle.com/#!9/7c74c17/1

【问题讨论】:

  • 向我们展示当前和预期的输出。如果是平局,您想退回什么?
  • 顺便说一句,与您的问题无关。但是您应该将COUNT(*) 更改为COUNT(players.playerID) 否则当左连接找不到匹配项时您将不会得到结果0。
  • 谢谢。添加了预期的输出。
  • 你的mysql是什么版本的?
  • 5.6.36-82.0-log

标签: mysql database join count max


【解决方案1】:

首先您需要找出group by 的最大值是多少

SELECT Count(players.playerid) AS count 
FROM   results 
       LEFT JOIN players 
              ON results.playerid = players.playerid 
WHERE  points = 5
GROUP  BY players.playerid
ORDER  BY count DESC
LIMIT 1;

然后您使用该查询来过滤您需要的结果。

SQL DEMO

SELECT results.playerid, 
       username, 
       Count(players.playerid ) AS count 
FROM   results 
       LEFT JOIN players 
              ON results.playerid = players.playerid 
WHERE  points = 5 
GROUP  BY playerid 
HAVING COUNT(players.playerid) = (
          SELECT Count(players.playerid) AS count 
          FROM   results 
                 LEFT JOIN players 
                        ON results.playerid = players.playerid 
          WHERE  points = 5
          GROUP  BY players.playerid
          ORDER  BY count DESC
          LIMIT 1
);

输出

| playerid | username | count |
|----------|----------|-------|
|        1 |    Lorem |     2 |
|        2 |    Ipsum |     2 |

【讨论】:

    猜你喜欢
    • 2014-07-01
    • 2021-01-26
    • 2015-01-27
    • 2012-07-13
    • 1970-01-01
    • 2021-09-17
    • 2019-11-19
    • 2018-10-29
    • 2013-07-25
    相关资源
    最近更新 更多