使用MySQL,我有一个简单的表,记录用户登录的IP地址:
TableIPLog
------------
ColumnID (primary key)
ColumnUserID (the ID of the user)
ColumnIP (the IP address the user used to login)
我想要一个查询,找到共享IP地址的用户!
为了澄清,我希望查询只显示超过1个成员使用IP地址的行。
我很难过。
答案 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