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

问题描述 投票:-1回答:1

我有以下查询,用于在mysql db中查找重复的电子邮件地址。它返回部分匹配重复值,如何仅获取完全匹配?

SELECT id, email, date FROM mytable GROUP BY email HAVING COUNT(email) > 1 

例如,它给出以下结果:

[email protected]@bar.net

[email protected]@foo.com

[email protected]@[email protected]

mysql group-by having
1个回答
0
投票

@@ 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`

Here is an example mocked up in sqlfiddle.

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.