web-dev-qa-db-fra.com

Requête SQL pour déterminer que les valeurs dans la colonne sont uniques

Comment écrire une requête pour déterminer simplement que les valeurs d'une colonne sont uniques?

20
JackyBoi

Essaye ça:

SELECT CASE WHEN count(distinct col1)= count(col1)
THEN 'column values are unique' ELSE 'column values are NOT unique' END
FROM tbl_name;

Remarque: cela ne fonctionne que si 'col1' n'a pas le type de données 'ntext' ou 'text'. Si vous possédez l'un de ces types de données, utilisez "CAST distinct (col1 AS nvarchar (4000))" (ou similaire) au lieu de "distinct col1".

18
Ganesh_Devlekar
select count(distinct column_name), count(column_name)
from table_name;

Si le nombre de valeurs uniques est égal au nombre total de valeurs, toutes les valeurs sont uniques.

14
FuzzyTree
IF NOT EXISTS ( 
  SELECT
    column_name
  FROM
    your_table
  GROUP BY
    column_name
  HAVING
    COUNT(*)>1
)
  PRINT 'All are unique'
ELSE
  PRINT 'Some are not unique'

Si vous souhaitez répertorier ceux qui ne sont pas uniques, prenez simplement la requête interne et exécutez-la. HTH.

5
TT.

Avec cette requête suivante, vous avez non seulement l'avantage de voir si vos colonnes sont uniques, mais également celle qui est la plus non-unique. De plus, comme vous voyez toujours la fréquence 1 car votre clé est unique, vous savez que vos résultats sont bons et ne manquent pas par exemple; quelque chose est moins clair lorsque vous utilisez une clause HAVING. 

SELECT Col1, Col2, COUNT(*) AS Freq
FROM Table
GROUP BY Col1, Col2
ORDER BY Freq DESC
2
Stijn

Si vous voulez vérifier si toutes les valeurs sont uniques et vous vous souciez des valeurs NULL, procédez comme suit:

select (case when count(distinct column_name) = count(column_name) and
                  (count(column_name) = count(*) or count(column_name) = count(*) - 1)
             then 'All Unique'
             else 'Duplicates'
        end)
from table t;
1
Gordon Linoff

Essayez-vous de ne renvoyer que les valeurs distinctes d'une colonne? Si tel est le cas, vous pouvez utiliser le mot clé DISTINCT. La syntaxe est la suivante: 

SELECT DISTINCT column_name,column_name
FROM table_name;
0
Matt Jones