mysql分组查询在电子邮件字段中显示部分匹配项

mysql分组查询在电子邮件字段中显示部分匹配项,mysql,group-by,having,Mysql,Group By,Having,我有以下查询,用于在mysql数据库中查找重复的电子邮件地址。 它返回的是部分匹配的重复值,如何只获得精确匹配 SELECT id, email, date FROM mytable GROUP BY email HAVING COUNT(email) > 1 例如,它给出了以下结果: 1234567890@foo.net 1234567890@bar.net 或 123@foo.com 456@foo.com 或 100abc@gmail.com 100xyz@foo.com 100

我有以下查询,用于在mysql数据库中查找重复的电子邮件地址。 它返回的是部分匹配的重复值,如何只获得精确匹配

SELECT id, email, date FROM mytable GROUP BY email HAVING COUNT(email) > 1 
例如,它给出了以下结果:

1234567890@foo.net
1234567890@bar.net

123@foo.com
456@foo.com

100abc@gmail.com
100xyz@foo.com

100xhsy@bar.com

@Abey我是通过将表连接到我想要显示的字段中来实现的,该字段是相同的,但两个记录之间真正唯一的值(如
id
)是不同的

以下是您将如何做到这一点:

SELECT `mt1`.`id`, 
    `mt1`.`email`, 
    `mt1`.`date` 
FROM `mytable` AS `mt1`
JOIN `mytable` AS `mt2` ON `mt2`.`email` = `mt1`.`email`
    AND `mt2`.`id` <> `mt1`.`id`
GROUP BY `mt1`.`id`
选择'mt1'。'id`,
`mt1`.`email`,
`mt1`.`日期`
从'mytable'改为'mt1`
将'mytable'作为'mt2'上的'mt2'连接。'email`='mt1`.'email`
和'mt2`.'id``mt1`.'id`
按“mt1”分组。`id`
如果您希望有一个重复电子邮件的独特列表,并且不想看到每个单独的记录,只需删除返回的其他字段,如下所示:

SELECT `mt1`.`email`
FROM `mytable` AS `mt1`
JOIN `mytable` AS `mt2` ON `mt2`.`email` = `mt1`.`email`
    AND `mt2`.`id` <> `mt1`.`id`
GROUP BY `mt1`.`email`
选择“mt1”。`email`
从'mytable'改为'mt1`
将'mytable'作为'mt2'上的'mt2'连接。'email`='mt1`.'email`
和'mt2`.'id``mt1`.'id`
按“mt1”分组。电子邮件`


希望这有帮助

运行
SELECT*(从您的_表中选择*,其中email=)1234567890@foo.net';找到多少行?请学习如何使用
分组依据
。我看不到任何聚合,所以为什么
分组依据
?您可以使用
分组依据
而不是
不同的
来将具有重复值的记录折叠成一个结果,即使您没有使用像
计数
求和
这样的聚合函数,我相信@Abey正试图这么做。