2013-08-15 3 views
6

Я хочу получать дубликат электронной почты из таблицы:Как найти дубликаты электронной почты в таблице тузды

userid  email 
------------------------- 
1  [email protected] 
2  [email protected] 
3  abc%40gmail.com 
4  [email protected] 
5  abcd%40gmail.com 

Так из этих записей я хочу привести как

Email   Count 
------------------------- 
[email protected] 2 
[email protected] 2 
[email protected] 1 

Кто-нибудь знает, как управлять этим ?

Спасибо.

ответ

3

Вы не можете напрямую сделать это в MySQL, потому что нет функции для urlencode или urldecode строк.

Вам нужно будет создать функцию, определенную пользователем, для обработки этого процесса. Как только у вас есть эта функция, просто зайдите на простой group by с предложением having.

Link to the required UDFs

Если UDFs не вариант, только временное решение я могу думать вручную заменить символы (под свой страх и риск):

SELECT REPLACE(email, "%40", "@") DuplicateEmail, COUNT(*) Amount 
FROM t 
GROUP BY DuplicateEmail 
ORDER BY Amount desc 

Fiddle here.

Выход:

| DUPLICATEEMAIL | AMOUNT | 
--------------------------- 
| [email protected] |  2 | 
| [email protected] |  2 | 
| [email protected] |  1 | 
+0

Нет, я хочу получить обе записи, содержащие @ &% 40 –

+0

Это не то, что у вас есть в вашем примере ... вы показываете только те, у которых есть @ в вашем результате. Результат моего запроса - это то, что вы ищете в ожидаемом вами результате. Пожалуйста, обновите свой вопрос, чтобы отобразить вывод, который вы сейчас говорите, что вам нужно. –

11

Если вы хотите выводить данные так же, как показанные на ваш вопрос, использовать этот запрос:

SELECT email, COUNT(*) AS count 
FROM table 
GROUP BY email HAVING count > 0 
ORDER BY count DESC; 
+1

Просто дружеский примечание для тех, кто попадает в это: в то время как это не правильный ответ, то ответ - это то, что downvotes для. Отметка «не ответ» - это когда кто-то добавляет комментарий (например, «меня тоже») как «ответ». Ура! –

+0

Вышеупомянутый @derhansen - это то, как я де-dupe таблицы. Иногда я нахожу LOWER ('email'), если кто-то использовал верхний и нижний регистр при вводе их адреса. Я также показываю только дубликаты записей с count> 1. Хорошо работает. – backwardm

 Смежные вопросы

  • Нет связанных вопросов^_^