数据库查询以查找共享IP地址的用户

时间:2012-06-14 19:55:50

标签: mysql

使用MySQL,我有一个简单的表,记录用户登录的IP地址:

TableIPLog
------------
ColumnID (primary key)
ColumnUserID (the ID of the user)
ColumnIP (the IP address the user used to login)

我想要一个查询,找到共享IP地址的用户!

为了澄清,我希望查询只显示超过1个成员使用IP地址的行。

我很难过。

3 个答案:

答案 0 :(得分:1)

你可以走这条路,这是针对SQL-Server的,但我确定有一个等价的mysql:

select ColumnIP, count(*)
from TableIPLog
group by ColumnIP
having count(*) > 1

然后你可以使用那些ip来查找与它们相关联的用户名......

编辑:考虑到这一点,它可能无法正常工作,具体取决于您的日志实现,但它不会花费太多时间来使其工作...也许使用exists子句......

答案 1 :(得分:1)

SELECT a.id,a.userid,a.ip 
FROM ip_log a inner join ip_log b 
ON a.userid<>b.userid and a.ip=b.ip;

这将列出具有相同ip但不同用户ID的所有userid和ip。

答案 2 :(得分:0)

我建议您存储这样的IP(请查看this link):

mysql> SELECT INET_ATON('192.168.0.10') AS ipn;
+------------+
| ipn        |
+------------+
| 3232235530 |
+------------+

mysql> SELECT INET_NTOA(3232235530) AS ipa;
+--------------+
| ipa          |
+--------------+
| 192.168.0.10 |
+--------------+

并使搜索应该像:

select INET_NTOA(columnIp), count(*) from tableIPLOG group by columnIp having count(*)>1