Differenza tra Seleziona unica e Seleziona distinta


145

Ho pensato che fossero sinonomi, ma ho scritto quanto segue in Microsoft SQL:

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

E fallì. Modificandolo in

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

aggiustato. Qualcuno può spiegare?

Risposte:


169

SELECT UNIQUEè la vecchia sintassi supportata dal sapore Oracle di SQL. È sinonimo di SELECT DISTINCT.

Utilizzare SELECT DISTINCTperché si tratta di SQL standard, SELECT UNIQUEnon standard e in marchi di database diversi da Oracle, SELECT UNIQUEpotrebbe non essere riconosciuto affatto.


113

Unique è una parola chiave utilizzata nella direttiva Create Table () per indicare che un campo conterrà dati univoci, generalmente utilizzati per chiavi naturali, chiavi esterne ecc.

Per esempio:

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) 
)

cioè il Numero di previdenza sociale di qualcuno sarebbe probabilmente un campo univoco nella tua tabella, ma non necessariamente la chiave primaria.

Distinto viene utilizzato nell'istruzione Select per notificare alla query che si desidera restituire solo gli elementi univoci quando un campo contiene dati che potrebbero non essere univoci.

Select Distinct Emp_LName
From Employee

Potresti avere molti dipendenti con lo stesso cognome, ma vuoi solo un cognome diverso.

Ovviamente se il campo che stai interrogando contiene dati univoci, la parola chiave Distinct diventa superflua.


2
È possibile che i numeri di previdenza sociale siano univoci, ma non lo sono. Ad esempio: dailyfinance.com/2010/08/12/…
aij,

18

select unique non è una sintassi valida per quello che stai cercando di fare

si desidera utilizzare selezionarerowrow o selectrowrow

E in realtà, non hai nemmeno bisogno di distinguere / distinguere ciò che stai cercando di fare. È possibile eliminare i duplicati scegliendo i parametri dell'istruzione union appropriati.

la query seguente da sola fornirà solo valori distinti

select col from table1 
union 
select col from table2

se volessi duplicati dovresti farlo

select col from table1 
union all
select col from table2

1
se non sbaglio, Oracle ti consente di dire select unique..., anche se preferirei fare gli standard.
chiede il

3

Solo in Oracle =>

SELECT DISTINCT e SELECT UNIQUE comportarsi allo stesso modo. Mentre DISTINCT è lo standard ANSI SQL, UNIQUE è un'istruzione specifica Oracle.

In altri database (come sql-server nel tuo caso) =>

SELECT UNIQUEsintassi non valida. UNIQUEè la parola chiave per aggiungere un vincolo univoco sulla colonna.

SELEZIONA DISTINCT


0
  1. Unica era la vecchia sintassi mentre Distinct è la nuova sintassi, che ora è la sql standard.
  2. Unico crea un vincolo per cui tutti i valori da inserire devono essere diversi dagli altri. Si può verificare un errore se si tenta di inserire un valore duplicato. Risultati distinti nella rimozione delle righe duplicate durante il recupero dei dati.
  3. Esempio: SELEZIONA i nomi DISTINCT DA studente;

    CREATE TABLE Persone (Id varchar NOT NULL UNIQUE , Name varchar (20));

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.