2008-09-05 4 views

Répondre

0

ne pouvait pas vous joindre à la liste sur le champ e-mail, puis voir ce que vous obtenez dans votre NULLS résultat?

Ou mieux encore, comptez les instances de chaque adresse e-mail? Et ne retournez que ceux avec count> 1

Ou même de prendre les champs email et id. Et renvoyez les entrées où l'e-mail est le même et les ID sont différents. (Pour éviter les doublons ne pas utiliser! = Mais soit < ou>.)

9

quelque chose comme ça

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

Essayez cette

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

Voulez-vous une liste de les derniers articles? Si vous pouviez donc utiliser:

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

Si vous voulez une liste de toutes les utilisations d'adresse e-mail en double GROUP BY pour recueillir des données similaires, puis une clause HAVING pour vous assurer que la quantité est supérieure à 1:

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

Si vous voulez que le dernier e-mail en double (un seul résultat) vous ajoutez simplement un « TOP 1 » et « ORDER BY »:

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

Si vous avez la clé de substitution, il est relativement facile d'utiliser la groupe par syntaxe mentionnée dans la publication de SQLMenance. Essentiellement, regroupez par tous les champs qui font deux ou plusieurs lignes «identiques».

Exemple de pseudo-code pour supprimer les enregistrements en double.

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 
)