2015-03-25 82 views

回答

0

您可以将表加入自身以查找IP相同但用户名不同的条目。假设你的表称为db.users,下面的查询会发现有一个以上的用户的所有IP地址:

SELECT DISTINCT `a`.`ip` 
FROM `db`.`users` `a` 
INNER JOIN `db`.`users` `b` 
ON `a`.`ip` = `b`.`ip` 
AND `a`.`user_id` != `b`.`user_id` 

如果你想找到的所有用户对于这样的IP地址列表,你也可以用GROUP BY聚集声明:

SELECT `a`.`ip`, GROUP_CONCAT(DISTINCT `a`.`user_id`) 
FROM `db`.`users` `a` 
INNER JOIN `db`.`users` `b` 
ON `a`.`ip` = `b`.`ip` 
AND `a`.`user_id` != `b`.`user_id` 
GROUP BY `a`.`ip` 

你可以在此SQL Fiddle附近玩这个,以接近你想要的东西。

1

试试这个查询;

select distinct t.user_id, t.ip 
    from table t inner join table x 
    on t.user_id <> x.user_id and t.ip=x.ip; 
+0

我想我可能过于粗略,但我真的不确定如何说出这个! – Gav 2015-03-25 15:21:35

+0

有两个上述字段的表,其中一个表包含很多条目......用户名...... Ip .....其中用户名重复多次,ip也是如此。我试图找到两个用户名是否使用相同的IP?上面的查询导致语法错误 – Gav 2015-03-25 15:23:50

+0

@Gav,请在此提及您的错误查询。 – 2015-03-25 20:51:38