MySQL подсчет дубликатов - PullRequest
4 голосов
/ 25 февраля 2011

У меня есть такая таблица

mysql> desc user_changes;
+----------+--------------+------+-----+---------+-------+ 
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+ 
| id       | varchar(16)  | NO   | PRI |         |       | 
| email    | varchar(255) | YES  | MUL | NULL    |       |  
| products | longtext     | YES  |     | NULL    |       | 
+----------+--------------+------+-----+---------+-------+ 
3 rows in set (0.00 sec)

И мне нужно создать запрос, который будет считать все дубликаты по электронной почте, как этот

 | 20061129180346 | test@test.com | 1^31^9 
 | 20061129330638 | test@test.com | 1^31^9

Ответы [ 5 ]

10 голосов
/ 25 февраля 2011
SELECT    count(*), email
FROM      user_changes
GROUP BY  email
HAVING    count(*) > 1

Последнее (HAVING) предложение ограничивает выбор количеством сообщений электронной почты, которые> 1, например. дубликаты.

1 голос
/ 25 февраля 2011

Это будет подсчитывать, сколько каждого адреса электронной почты есть в таблице, независимо от регистра адреса электронной почты.Например, «test@test.com» и «TEST@TEST.COM» будут рассматриваться как один и тот же адрес электронной почты.Он также просто показывает дубликаты, любой адрес электронной почты, который только что встречается, не будет возвращен.Если вы хотите вернуть их, просто опустите предложение "HAVING".

SELECT LOWER(email) EmailAddress, COUNT(*) EmailCount
  FROM user_changes
 GROUP BY LOWER(email)
HAVING COUNT(*) > 1;
1 голос
/ 25 февраля 2011
select email, count(*)
from user_changes
group by email
having count(*) > 1
1 голос
/ 25 февраля 2011

Я не понимаю ваш второй блок, но для подсчета каждого письма сделайте

SELECT email, COUNT(*) AS count FROM user_changes GROUP BY email WHERE count > 1;
1 голос
/ 25 февраля 2011
select
    email,
    count(email) as email_count
from
    user_changes
group by
    email
having
    count(email) > 1
order by
    email asc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...