查找一个字段不相等的重复记录

时间:2015-03-25 08:58:33

标签: mysql

我有一张带有user_id和ip
的表 我想查找ip相同但用户名不同的记录。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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上使用此功能,以便更接近您想要的内容。