2015-12-09 96 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