it-swarm.com.de

Unterschied zwischen Select Unique und Select Distinct

Ich dachte, diese wären synonym, aber ich habe Folgendes in Microsoft SQL geschrieben:

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

Und es ist fehlgeschlagen. Ändern Sie es auf

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

behoben. Kann das jemand erklären?

136
user42712

SELECT UNIQUE ist eine alte Syntax, die von Oracle SQL unterstützt wird. Es ist synonym mit SELECT DISTINCT.

Verwenden SELECT DISTINCT weil dies Standard-SQL ist und SELECT UNIQUE ist kein Standard, und bei anderen Datenbankmarken als Oracle ist SELECT UNIQUE wird möglicherweise überhaupt nicht erkannt.

164
Bill Karwin

Unique ist ein Schlüsselwort, das in der Anweisung Create Table () verwendet wird, um anzugeben, dass ein Feld eindeutige Daten enthält, die normalerweise für natürliche Schlüssel, Fremdschlüssel usw. verwendet werden.

Zum Beispiel:

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

d.h. die Sozialversicherungsnummer von jemandem ist wahrscheinlich ein eindeutiges Feld in Ihrer Tabelle, aber nicht unbedingt der Primärschlüssel.

Distinct wird in der Select-Anweisung verwendet, um die Abfrage zu benachrichtigen, dass die eindeutigen Elemente nur zurückgegeben werden sollen, wenn ein Feld Daten enthält, die möglicherweise nicht eindeutig sind.

Select Distinct Emp_LName
From Employee

Möglicherweise haben Sie viele Mitarbeiter mit demselben Nachnamen, möchten jedoch nur unterschiedliche Nachnamen.

Wenn das Feld, das Sie abfragen, eindeutige Daten enthält, wird das Schlüsselwort Distinct natürlich überflüssig.

112
BenAlabaster

select unique ist keine gültige Syntax für das, was Sie versuchen

sie möchten entweder select distinct oder select distinctrow verwenden

Tatsächlich brauchen Sie nicht einmal einen Unterschied in dem, was Sie versuchen, zu tun. Sie können Duplikate beseitigen, indem Sie die entsprechenden Parameter für die Union-Anweisung auswählen.

die unten stehende Abfrage liefert nur unterschiedliche Werte

select col from table1 
union 
select col from table2

wenn Sie Duplikate wollten, müssten Sie dies tun

select col from table1 
union all
select col from table2
18
mson

Nur in Oracle =>

SELECT DISTINCT und SELECT UNIQUE verhalten sich genauso. Während DISTINCT ANSI SQL-Standard ist, ist UNIQUE eine Oracle-spezifische Anweisung.

In anderen Datenbanken (wie SQL-Server in Ihrem Fall) =>

SELECT UNIQUE ist eine ungültige Syntax. UNIQUE ist ein Schlüsselwort zum Hinzufügen einer eindeutigen Einschränkung für die Spalte.

SELECT DISTINCT

2
Somnath Muluk
  1. nique war die alte Syntax, während Distinct die neue Syntax ist, die jetzt die Standard-SQL ist.
  2. Eindeutig erstellt eine Einschränkung, dass sich alle einzufügenden Werte von den anderen unterscheiden müssen. Ein Fehler kann festgestellt werden, wenn versucht wird, einen doppelten Wert einzugeben. Distinct entfernt beim Abrufen von Daten die doppelten Zeilen.
  3. Beispiel: SELECT DISTINCT names FROM student;

    TABELLE ERSTELLEN Personen (ID varchar NOT NULL UNIQUE , Name varchar (20));

0
aashna mahajan