mysql - mysql GROUP BY 查询在电子邮件字段中显示部分匹配
问题描述
我有以下查询用于在 mysql db 中查找重复的电子邮件地址。它返回部分匹配重复值,如何只获得完全匹配?
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`
如果您想要一个不同的重复电子邮件列表并且不关心查看每个单独的记录,只需修剪您返回的其他字段,如下所示:
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`
希望这可以帮助!
推荐阅读
- ms-word - Office js - Word 桌面与在线表格的差异
- angularjs - 使用 AngularJS 发送“二进制文件”
- mysql - 是否允许在mysql5.7中的其他程序内部创建一个程序
- javascript - 异步 Ajax 调用混合回调
- go - 从 viper 配置文件中删除键值对
- arrays - 检查数组是否有值,如果为空则绕过
- php - Youtube 频道 URL 到频道 ID (PHP)
- javascript - 更新 API 响应的表内容
- c# - 如何用现有对象替换预制件?
- javascript - Extjs 现代工具包 6.5.2 Triton 绑定多选字段