Résultat de requête supérieur avec le mot-key DISTINCT?

Dites que j'ai une table avec 100 000 User IDs (UserID est un int). Quand j'exécute une requête comme

SELECT COUNT(Distinct User ID) from tableUserID 

le résultat obtenu est plus élevé que le résultat de l'instruction suivante:

 SELECT COUNT(User ID) from tableUserID 

Je pensais que Distinct implicite unique, ce qui signifierait un résultat inférieur. Qu'est-ce qui causerait cette différence et comment identifierais-je ces identifiants qui ne s'affichent pas dans la deuxième requête?

Merci

**

MISE À JOUR – 11h14 est

**

Salut à tous

Je m'excuse sincèrement car j'aurais dû prendre la peine de reproduire cela dans mon environnement local. Mais je voulais juste voir s'il y avait un consensus général à ce sujet. Voici les détails complets:

La requête est le résultat d'une jointure interne entre deux tables. On a cette information:

 TABLE ACTIVITY (NO PRIMARY KEY) UserID int (not Nullable) JoinDate datetime Status tinyint LeaveDate datetime SentAutoMessage tinyint SectionDetails varchar 

Et voici la deuxième table:

 TABLE USER_INFO (CLUSTERED PRIMARY KEY) UserID int (not Nullable) UserName varchar UserActive int CreatedOn datetime DisabledOn datetime 

Les tables sont jointes sur l'ID user et l'ID user sélectionné dans les 2 requêtes d'origine est celui de TABLE ACTIVITY.

J'espère que cela clarifie la question.

Ce n'est pas techniquement une réponse, mais puisque j'ai pris le time d'parsingr cela, je pourrais aussi bien le postr (bien que j'ai le risque d'être abattu).

Je ne pouvais pas reproduire le comportement décrit.

C'est le scénario:

 declare @table table ([user id] int) insert into @table values (1),(1),(1),(1),(1),(1),(1),(2),(2),(2),(2),(2),(2),(null),(null) 

Et voici quelques requêtes et leurs résultats:

 SELECT COUNT(User ID) FROM @table --error: this does not run SELECT COUNT(dsitinct User ID) FROM @table --error: this does not run SELECT COUNT([User ID]) FROM @table --result: 13 (nulls not counted) SELECT COUNT(distinct [User ID]) FROM @table --result: 2 (nulls not counted) 

Et quelque chose d'intéressant:

 SELECT user --result: 'dbo' in my sandbox DB SELECT count(user) from @table --result: 15 (nulls are counted because user value is not null) SELECT count(distinct user) from @table --result: 1 (user is the same value always) 

Je trouve très étrange que vous puissiez exécuter les requêtes exactement comment vous avez décrit. Vous devez nous indiquer la structure de la table et datatables pour get de l'aide supplémentaire.

comment pourrais-je identifier les ID d'user qui n'apparaissent pas dans la deuxième requête

Essayez cette requête

 SELECT UserID from tableUserID Where UserID not in (SELECT Distinct User ID from tableUserID) 

Je pense qu'il n'y aura pas de rangée.

Modifier:

User est un mot key réservé. Voulez-vous dire UserID dans vos requests?

Ray: Oui

J'ai essayé de reproduire le problème dans mon environnement et ma conclusion est que count tenu des conditions que vous avez décrites, le résultat de la première requête ne peut pas être plus élevé que le second. Même s'il y aurait des NULL, cela n'arrivera tout simplement pas.

Avez-vous exécuté la requête @ Jean-Charles sugested?

Je suis très insortinggué par cela, s'il vous plaît laissez-nous savoir ce qui s'avère être le problème.