2015-12-09 57 views
-1

我有一个MySQL表有2列(ip_address和customer_id)。我试图在MySQL中找到一种方法来查找使用多个帐户登录但拥有相同IP的人员。MySQL查询找到重复的用户

例如,如果customer_id 3和customer_id 7都在1.1.1.1上登录,我希望能够找到它。

我不需要知道它是否是同一个IP上的同一个用户(或不同IP上的同一个用户),就好像它是同一IP上的不同用户一样。

+0

您的表格是如何定义的?你试过和失败了什么查询? – Alfabravo

回答

0

尝试像

SELECT * 
FROM "myTable" as "a" join "myTable" as "b" on ("a"."ip_address" = "b."ip_address") 
WHERE "a"."customer_id" <> "b"."customer_id"; 

这是第一次创建具有相同的IP(即使在事实上同一条线路)项的所有排列的列表和过滤它具有相同的IP,但不同的customer_id这些行。

0

你可以试试下面的查询

SELECT a.customer_id AS aid, a.ip_address AS ip, b.customer_id AS bid 
FROM log AS a, log AS b 
WHERE a.ip_address = b.ip_addres AND a.customer_id <> b.customer_id; 
+0

谢谢,我现在可以看到它列出了所有的IP和客户ID。有没有在mySQL的方式将它们分组在一起,所以它说IP地址 - 用户1,用户2,IP地址2,用户1,用户7 – user2572639

+0

可能是这样的 SELECT ip,aid,bid FROM(SELECT a.customer_id AS aid,a .ip_address AS ip,b.customer_id AS bid FROM log AS a,log AS b WHERE a.ip_address = b.ip_address AND a.customer_id <> b.customer_id GROUP BY aid,bid)AS t GROUP BY ip; – newman

0

您可以把这些IP_ADDRESS,发现有多少客户有相同的IP。

select a.ip_address 
     ,group_concat(a.customer_id) as customers 
     ,count(distinct a.customer_id) as customers_count 
     from database.table a 
group by a.ip_address 
having customers_count > 1