2008-09-05 4 views
4

Каков наилучший способ определения повторяющихся записей в таблице SQL Server?SQL Server Duplicate Checking

Например, я хочу найти последнее дублирующее электронное письмо, полученное в таблице (таблица содержит первичный ключ, полученные данные и поля электронной почты).

Образец данных:

1 01/01/2008 [email protected] 
2 02/01/2008 [email protected] 
3 01/12/2008 [email protected] 

ответ

0

не могли бы вы присоединиться к списку на поле электронной почты, а затем посмотреть, что обнуляет вы получаете в ваш результат?

Или еще лучше подсчитать экземпляры каждого адреса электронной почты? И верните только те, у которых есть счет> 1

Или даже возьмите поля электронной почты и идентификаторов. И верните записи, где электронное письмо одинаковое, а идентификаторы разные. (Для того, чтобы избежать дубликатов не использовать! = А либо < или>.)

9

что-то вроде этого

select email ,max(receiveddate) as MaxDate 
from YourTable 
group by email 
having count(email) > 1 
0

Попробуйте

select * from table a, table b 
where a.email = b.email 
0
SELECT [id], [receivedate], [email] 
FROM [mytable] 
WHERE [email] IN (SELECT [email] 
    FROM [myTable] 
    GROUP BY [email] 
    HAVING COUNT([email]) > 1) 
0

Вы хотите список последние пункты? Если это так, вы можете использовать:

SELECT [info] FROM [table] t WHERE NOT EXISTS (SELECT * FROM [table] tCheck WHERE t.date > tCheck.date) 

Если вы хотите получить список всех дубликатов электронной почты используют адрес GROUP BY собрать аналогичные данные, затем HAVING условие, чтобы убедиться, что количество больше чем 1:

SELECT [info] FROM [table] GROUP BY [email] HAVING Count(*) > 1 DESC 

Если вы хотите, последний дубликат электронной почты (один результат) вы просто добавить «TOP 1» и «ORDER BY»:

SELECT TOP 1 [info] FROM [table] GROUP BY [email] HAVING Count(*) > 1 ORDER BY Date DESC 
0

Если у вас есть суррогатный ключ является относительно простой в использовании группа по синтаксису в сообщении SQLMenance. По существу, группируйте все поля, которые делают две или несколько строк «одинаковыми».

Пример псевдокода для удаления повторяющихся записей.

Create table people (ID(PK), Name, Address, DOB) 

Delete from people where id not in (
Select min(ID) from people group by name, address, dob 
)