La clausola SQL DISTINCT viene utilizzata per rimuovere valori duplicati dai risultati della query. Garantisce che l'output mostri solo record univoci per le colonne specificate.
Esempio: Per prima cosa lo faremo creare un database SQL demo e una tabella su cui utilizzeremo il comando Distinct Clause.
Domanda:
SELECT DISTINCT Department
FROM Employees;
Produzione:
Sintassi:
SELECT DISTINCT column1 column2
FROM table_name
- colonna1 colonna2: Nomi dei campi della tabella.
- Nome_tabella: Tabella da cui vogliamo recuperare i record.
Nota: Se utilizzato su più colonne
DISTINCTrestituisce combinazioni univoche di valori in tali colonne.
Esempi di DISTINCT in SQL
Creiamo una tabella di esempio e popoliamola con alcune voci duplicate. Vedremo alcuni esempi di utilizzo della parola chiave DISTINCT con una tabella studenti di esempio.
Esempio 1: recupera nomi univoci dal campo NAME.
La query restituisce solo nomi univoci eliminando le voci duplicate dalla tabella.
Domanda:
SELECT DISTINCT NAME FROM students; Produzione:
Esempio 2: recupero di combinazioni univoche di più colonne
Questa query recupera combinazioni distinte di NOME ed ETÀ: se due righe hanno lo stesso nome ed età, solo una di esse apparirà nel set di risultati.
Domanda:
SELECT DISTINCT NAME AGE FROM students;Produzione:
Esempio 3: utilizzo di DISTINCT con la clausola ORDER BY
Possiamo combinare la parola chiave DISTINCT con il ORDINA PER clausola per filtrare valori univoci durante l'ordinamento del set di risultati. Questa query recupera le età univoche dalla tabella degli studenti e le ordina in ordine crescente.
Domanda:
SELECT DISTINCT AGE FROM students ORDER BY AGE; Produzione:
Esempio 4: utilizzo di DISTINCT con funzioni aggregate (ad esempio COUNT())
Qui controlleremo il CONTARE() funzione con una clausola DISTINCT che fornirà il numero totale di studenti utilizzando la funzione COUNT().
Domanda:
SELECT COUNT(DISTINCT ROLL_NO) FROM Students ;Produzione:
Esempio 5: DISTINCT con valori NULL
In SQL la parola chiave DISTINCT tratta NULL come un valore univoco. NULL viene trattato come un valore distinto, quindi apparirà solo una volta se sono presenti più NULL.
Domanda:
INSERT INTO students (ROLL_NO NAME ADDRESS PHONE AGE)
VALUES (13 'John Doe' '123 Unknown Street' '9876543216' NULL);
SELECT DISTINCT AGE FROM students;
Produzione:
Crea quiz