0

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

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

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

澄清一下,我希望查询仅显示 IP 地址已被超过 1 个成员使用的行。

我难住了。

4

3 回答 3

1

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

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

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

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

于 2012-06-14T19:58:41.657 回答
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 的用户 ID 和 IP。

于 2012-06-15T02:14:36.423 回答
0

我建议您像这样存储 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
于 2012-06-14T20:03:56.287 回答