使用 MySQL,我有一个简单的表来记录用户登录的 IP 地址:
TableIPLog
------------
ColumnID (primary key)
ColumnUserID (the ID of the user)
ColumnIP (the IP address the user used to login)
我想要一个查询,它会找到共享 IP 地址的用户!
澄清一下,我希望查询仅显示 IP 地址已被超过 1 个成员使用的行。
我难住了。
使用 MySQL,我有一个简单的表来记录用户登录的 IP 地址:
TableIPLog
------------
ColumnID (primary key)
ColumnUserID (the ID of the user)
ColumnIP (the IP address the user used to login)
我想要一个查询,它会找到共享 IP 地址的用户!
澄清一下,我希望查询仅显示 IP 地址已被超过 1 个成员使用的行。
我难住了。
你可以走这条路,这是针对 SQL-Server 的,但我确信有一个 mysql 等价物:
select ColumnIP, count(*)
from TableIPLog
group by ColumnIP
having count(*) > 1
然后您可以使用这些 ip 来查找与它们关联的用户名...
编辑:考虑到这一点,它可能无法正常工作,具体取决于您对日志的实现,但它不会花太多时间来让它工作......也许使用exists子句......
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 的用户 ID 和 IP。
我建议您像这样存储 IP(请查看此链接):
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