2 votes

Utilisation de EXCEPT et DISTINCT dans SQL Server

J'essaie de déterminer si certains utilisateurs de cette table ont plusieurs adresses électroniques.

Lorsque j'exécute les deux requêtes suivantes, la requête sans DISTINCT a plus de résultats que celle utilisant DISTINCT.

SELECT UserName, EmailAddress 
FROM Users;

SELECT DISTINCT UserName, EmailAddress 
FROM Users;

Cependant, cette requête ne renvoie aucun résultat (vraisemblablement parce que les lignes restantes seraient identiques à une ligne qui se trouve dans les deux tables).

SELECT UserName, Payment 
FROM Users

EXCEPT

SELECT DISTINCT UserName, Payment 
FROM Users

Comment puis-je obtenir les utilisateurs ayant plusieurs adresses e-mail ?

3voto

Gordon Linoff Points 213350

Il suffit d'utiliser l'agrégation. Si tu veux la liste :

SELECT UserName, EmailAddress
FROM Users
GROUP BY UserName, EmailAddress
HAVING COUNT(*) > 1;

Si vous voulez juste un compte des doublons, vous pouvez compter la différence. Malheureusement, le serveur SQL n'autorise pas l'utilisation de plusieurs colonnes pour les éléments suivants COUNT(DISTINCT) mais vous pouvez les concaténer. En supposant qu'aucune valeur n'est jamais NULL :

SELECT COUNT(*) - COUNT(DISTINCT UserName + ' ' + EmailAddress) as numDuplicates
FROM Users;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X