mysql - 仅在另一列具有不同值的情况下查找重复数据

标签 mysql

我有一个包含 IP 地址、成员(member) ID 和设备 ID 的表格。我想查找多个成员使用相同 IP 地址的帐户。但是,因为该表还记录了设备 ID,所以我不能只搜索重复的 IP 条目。

表格示例

device_key      member_id       ip_address  
123452345       1               127.0.0.1       
2687924         1               127.0.0.1       
3983456         23              255.255.255.255  
4659824         876             255.255.255.255
54653787        90              1.1.1.1      

我已经试过了:

SELECT 
    member_id,
    ip_address, 
    COUNT(ip_address)
FROM
    table
GROUP BY ip_address
HAVING COUNT(ip_address) > 1

以上代码将输出 127.0.0.1255.255.255.255。但是我只对 255.255.255.255 感兴趣,因为这个 IP 被不止一个人使用。我想不出只输出这个的正确代码。

最佳答案

SELECT ip_address, COUNT(DISTINCT member_id)
FROM table
GROUP BY ip_address
HAVING COUNT(DISTINCT member_id) > 1;

如果你想得到使用这些IP地址的实际成员(member)ID,你可以这样做:

SELECT ip_address, member_id
FROM table
WHERE ip_address IN (SELECT ip_address
                     FROM table
                     GROUP BY ip_address
                     HAVING COUNT(DISTINCT member_id) > 1)
ORDER BY ip_address, member_id;

关于mysql - 仅在另一列具有不同值的情况下查找重复数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57511613/

相关文章:

php - 按日期和自动递增列 (id) 排序,但按第四列 (ab) 的字母顺序对第三列 (oid) 具有相同值的行进行排序

mysql - 如何在不同列中显示一个表的mysql计数结果?

mysql - Vaadin 上传图像并将其存储到数据库

mysql - 使用 auto_increment 值作为复合 UID 的一部分 - 高效的查询方法?

mysql - 在 GROUP BY 语句中获取平均值

mysql - mysql 中的纪元与日期和时间

mysql - 内表连接出现意外结果

mysql - Docker Wordpress 不断重定向到网站的在线版本

mysql - 我对像 Wall 这样的 facebook 的查询是否高效或者我配置错误

php - 列出产品编号部分相同的产品