mysql - 选择多次出现的所有行

标签 mysql

好的,我有一个名为“test”和 3 列的 MySQL 表。

 ID | playername | lastloginip  
-----------------------------
 1  | user 1     |     1  
 2  | user 2     |     2  
 3  | user 3     |     3  
 4  | user 4     |     4  
 5  | user 5     |     5  
 6  | user 6     |     1  
 7  | user 7     |     1  
 8  | user 8     |     2  

现在,我想全选表中多次找到laSTLoginip的行,然后给出这些行的计数。

在这种情况下,它应该返回数字 5 因为用户 1、2、6、7 和 8 具有多次找到的 laSTLoginip。

我已经尝试过使用

SELECT COUNT(*) 
FROM (
    SELECT * 
    FROM test 
    GROUP BY lastloginip 
    HAVING COUNT(*) > 1
)  t

但是返回的是数字 2 而不是 5。
我不确定如何正确设置此查询。我在互联网上的大部分发现都只显示 2 行或给出数字 2 而不是 5。

最佳答案

首先 COUNT(),然后是 SUM():

SELECT SUM(occurences) 
FROM 
(
   SELECT COUNT(*) AS occurences
   FROM test
   GROUP BY lastloginip
   HAVING COUNT(*)>1
) t

关于mysql - 选择多次出现的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8720507/

相关文章:

php - mysql复制到日志中

mysql - 如何通过 sql 对多对多的结果进行分组,而不是使用 php 来进行分组?

mysql - 如何一条一条的选择记录而不重复

sql - MySql 中的关系规则

mysql - 在 Rails 中指定连接表的条件

php - MySQL Select 问题

mysql - sql为每个月选择一条记录,其中包含该月记录的总和

mysql - 更新具有每个组最大日期的列的标志

mysql - 在mysql中查询ip范围的最有效方法

mysql - MSSQL 和 MySQL 作为链接服务器