139 votes

Différence entre Select Unique et Select Distinct

Je pensais qu'ils étaient synonymes, mais j'ai écrit ce qui suit dans Microsoft SQL :

Select Unique col from 
     (select col from table1 union select col from table2) alias

Et ça a échoué. En le changeant en

Select Distinct col from 
     (select col from table1 union select col from table2) alias

l'a réparé. Quelqu'un peut expliquer ?

166voto

Bill Karwin Points 204877

SELECT UNIQUE est une ancienne syntaxe prise en charge par la version de SQL d'Oracle. Elle est synonyme de SELECT DISTINCT .

Utilisez SELECT DISTINCT parce que c'est du SQL standard, et SELECT UNIQUE est non standard, et dans des marques de bases de données autres qu'Oracle, SELECT UNIQUE peut ne pas être reconnue du tout.

112voto

BenAlabaster Points 20189

Unique est un mot clé utilisé dans la directive Create Table() pour indiquer qu'un champ contiendra des données uniques, généralement utilisé pour les clés naturelles, les clés étrangères, etc.

Par exemple :

Create Table Employee(   
    Emp_PKey Int Identity(1, 1) Constraint PK_Employee_Emp_PKey Primary Key,  
    Emp_SSN Numeric Not Null Unique,  
    Emp_FName varchar(16),   
    Emp_LName varchar(16) 
)

Par exemple, le numéro de sécurité sociale d'une personne serait probablement un champ unique dans votre table, mais pas nécessairement la clé primaire.

Distinct est utilisé dans l'instruction Select pour indiquer à la requête que vous souhaitez que seuls les éléments uniques soient renvoyés lorsqu'un champ contient des données qui peuvent ne pas être uniques.

Select Distinct Emp_LName
From Employee

Vous pouvez avoir de nombreux employés portant le même nom de famille, mais vous ne voulez que chaque nom de famille différent.

Il est évident que si le champ que vous interrogez contient des données uniques, alors le champ Distinct Le mot-clé devient superflu.

18voto

mson Points 4828

Select unique n'est pas une syntaxe valide pour ce que vous essayez de faire

vous voulez utiliser soit select distinct soit select distinctrow

Et en fait, vous n'avez même pas besoin de distinct/distinctrow dans ce que vous essayez de faire. Vous pouvez éliminer les doublons en choisissant les paramètres appropriés de l'instruction union.

la requête ci-dessous, par elle-même, ne fournira que des valeurs distinctes

select col from table1 
union 
select col from table2

si vous vouliez des doublons, il faudrait faire

select col from table1 
union all
select col from table2

5voto

Somnath Muluk Points 10173

Seulement dans Oracle =>

SELECT DISTINCT et SELECT UNIQUE se comportent de la même manière. Alors que DISTINCT est une norme ANSI SQL, UNIQUE est une instruction spécifique à Oracle.

Dans d'autres bases de données (comme sql-server dans votre cas) =>

SELECT UNIQUE est une syntaxe invalide. UNIQUE est le mot clé pour ajouter une contrainte unique sur la colonne.

SÉLECTIONNEZ DISTINCT

0voto

aashna mahajan Points 11
  1. Unique en son genre était l'ancienne syntaxe tandis que Distinct est la nouvelle syntaxe, qui est maintenant le sql standard.
  2. Unique en son genre crée une contrainte selon laquelle toutes les valeurs à insérer doivent être différentes des autres. Une erreur peut être constatée si l'on tente d'introduire une valeur en double. Distinct permet de supprimer les lignes en double lors de la récupération des données.
  3. Exemple : SELECT DISTINCT noms FROM student ;

    CREATE TABLE Persons ( Id varchar NOT NULL UNIQUE , Nom varchar(20) ) ;

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