MySQL Query将查找用户使用相同IP地址的多个用户名

时间:2012-05-05 19:16:54

标签: php mysql ip-address unique

我已经在这个问题上做了一些功课,我很确定它会涉及加入一张桌子,但我还没到那里。

我有一个带有“帖子”表的论坛。它为论坛上发布的每篇帖子存储了ipaddress,用户名,用户ID和postid。

我正在尝试获取一个查询,我可以每周运行一次,这将输出我在此期间已被多个用户ID使用的ipaddresses列表 - 并且postids涉及多个用户ID使用相同的ipaddress。

到目前为止,我从其他人的类似问题中得到了这个:

SELECT t1.userid,t2.userid, t1.username, t2.username, t1.ipaddress, t2.ipaddress, t1.postid, t2.postid
FROM qvb_post t1
INNER JOIN qvb_post t2 ON t1.ipaddress=t2.ipaddress AND t1.userid!=t2.userid
WHERE 
t1.dateline > 1335897698 AND t2.dateline > 1335897698

但它返回了很多不必要的行IMO,例如它返回每个重复的方式 - 两者都好像userid 1使用了userid 2的ipaddress,再次就像userid2使用了userid1的地址一样。

日期线是几天前的。

理想情况下,我只想按顺序查看重复用户名的ip地址列表,并为每个帖子重复,这样我就可以使用PHP并生成一个输出IP地址的报告,即用户名(userids)使用它,以及由它们创造的postids。

我知道有两个人拥有相同的IP地址有很多正当理由,请放心,不会因为出现在本报告中而对任何人采取严厉的行动。

提前感谢您提供的任何帮助。

为了清楚我对PHP很好,它只是我需要帮助的查询。

1 个答案:

答案 0 :(得分:6)

这应该给你一个开始:

SELECT ipaddress, GROUP_CONCAT(DISTINCT username)
FROM qvb_post
GROUP BY ipaddress
HAVING COUNT(DISTINCT username) > 1
ORDER BY COUNT(DISTINCT username) DESC

它显示了多个不同用户名使用的IP地址,并为每个IP地址提供了逗号分隔的用户名列表。如果您愿意,可以将其扩展为包括帖子ID。