2013-03-05 2 views
1

Мне нужно найти дубликаты писем в нашей базе данных. Я смотрю на один стол для этой информации. Что у меня до сих порПоиск дублирующих адресов электронной почты

SELECT name.email, name.ID 

From Name 
Group BY Name.ID, Name.EMAIL 
Having Count(*) > 1 

Я знаю, что это неправильно, но не уверен, как правильно его записать.

ответ

6

удалить ID

SELECT name.email 
From Name 
Group BY Name.EMAIL 
Having Count(*) > 1 

, если вы хотите, чтобы получить число сообщений электронной почты,

SELECT name.email, COUNT(*) totalEmailCount 
From Name 
Group BY Name.EMAIL 
Having Count(*) > 1 
+1

Вы можете также добавить 'ВЫБРАТЬ Name.Email, COUNT (1)' для выбора части запроса найдите количество дубликатов – Kane

+0

убедитесь, что для вашего сопоставления установлено значение игнорировать регистр. –

+0

@ DanielA.White Я думаю, что по умолчанию это 'case insensitive'. –

1

Здесь вы идете:

SELECT name.email, COUNT(*) 
FROM 
    Name 
GROUP BY 
    Name.email 
HAVING 
    COUNT(*) > 1 
2

Запрос будет

SELECT name.email, COUNT(*) FROM Name 
GROUP BY Name.email HAVING COUNT(*) > 1 

Что вам нужно знать, так это то, что если вы также группируете по ID, счет будет равен 1, поэтому ваш запрос не работает.

Если вам необходимо знать идентификаторы пользователей с электронной почтой дублированной вы можете сделать это:

select Name.ID, Name.Email from Name where Name.Email in (

SELECT name.email FROM Name 
    GROUP BY Name.email HAVING COUNT(*) > 1 
) 
0
select id,email from 
(select id,email,count(email) over (partion by email order by id) cnt from name) where cnt>1 
Смежные вопросы