Summario: in questo tutorial, imparerete come usare la clausola PostgreSQL SELECT DISTINCT
per rimuovere le righe duplicate da un risultato restituito da una query.
Introduzione alla clausola PostgreSQL SELECT DISTINCT
La clausola DISTINCT
è usata nell’istruzione SELECT
per rimuovere le righe duplicate da un insieme di risultati. La clausola DISTINCT
mantiene una riga per ogni gruppo di duplicati. La clausola DISTINCT
può essere applicata ad una o più colonne nella lista di selezione dell’istruzione SELECT
.
Di seguito viene illustrata la sintassi della clausola DISTINCT
:
Code language: SQL (Structured Query Language) (sql)SELECT DISTINCT column1FROM table_name;
In questa dichiarazione, i valori della colonna column1
sono usati per valutare il duplicato.
Se si specificano più colonne, la clausola DISTINCT
valuterà il duplicato in base alla combinazione dei valori di queste colonne.
Code language: SQL (Structured Query Language) (sql)SELECT DISTINCT column1, column2FROM table_name;
In questo caso, la combinazione di valori in entrambe le colonne column1
e column2
sarà usata per valutare il duplicato.
PostgreSQL fornisce anche il DISTINCT ON (expression)
per mantenere la “prima” riga di ogni gruppo di duplicati usando la seguente sintassi:
L’ordine delle righe restituite dall’istruzione SELECT
non è specificato quindi anche la “prima” riga di ogni gruppo del duplicato non è specificata.
È una buona pratica usare sempre la clausola ORDER BY
con la DISTINCT ON(expression)
per rendere prevedibile il set di risultati.
Nota che l’espressione DISTINCT ON
deve corrispondere all’espressione più a sinistra nella clausola ORDER BY
.
Esempi di PostgreSQL SELECT DISTINCT
Creiamo una nuova tabella chiamata distinct_demo
e inseriamo i dati in essa per praticare la clausola DISTINCT
.
Nota che imparerai come creare una tabella e inserire dati in una tabella nel tutorial successivo. In questo tutorial, basta eseguire lo statement in psql o pgAdmin per eseguire le dichiarazioni.
Prima di tutto, usate il seguente statement CREATE TABLE
per creare la tabella distinct_demo
che consiste di tre colonne: id
bcolor
e fcolor
.
Code language: SQL (Structured Query Language) (sql)CREATE TABLE distinct_demo (id serial NOT NULL PRIMARY KEY,bcolor VARCHAR,fcolor VARCHAR);
In secondo luogo, inserite alcune righe nella tabella distinct_demo
utilizzando la seguente dichiarazione INSERT
:
In terzo luogo, interroga i dati della tabella distinct_demo
utilizzando l’istruzione SELECT
:
Code language: SQL (Structured Query Language) (sql)SELECTid,bcolor,fcolorFROMdistinct_demo ;
PostgreSQL DISTINCT una colonna esempio
La seguente istruzione seleziona valori unici nella colonna bcolor
dalla tabella t1
e ordina il risultato in ordine alfabetico usando la clausola ORDER BY
.
Code language: SQL (Structured Query Language) (sql)SELECTDISTINCT bcolorFROMdistinct_demoORDER BYbcolor;
PostgreSQL DISTINCT colonne multiple
La seguente dichiarazione dimostra come usare la clausola DISTINCT
su colonne multiple:
Code language: SQL (Structured Query Language) (sql)SELECTDISTINCT bcolor,fcolorFROMdistinct_demoORDER BYbcolor,fcolor;
Perché abbiamo specificato entrambe le colonne bcolor
e fcolor
nella clausola SELECT DISTINCT
, PostgreSQL ha combinato i valori in entrambe le colonne bcolor
e fcolor
per valutare l’unicità delle righe.
La query restituisce la combinazione unica di bcolor
e fcolor
dalla tabella distinct_demo
. Notate che la tabella distinct_demo
ha due righe con red
valore in entrambe le colonne bcolor
e fcolor
. Quando abbiamo applicato il DISTINCT
ad entrambe le colonne, una riga è stata rimossa dal set di risultati perché è il duplicato.
PostgreSQL DISTINCT ON example
L’istruzione seguente ordina il set di risultati per le colonne bcolor
e fcolor
, e poi per ogni gruppo di duplicati, mantiene la prima riga nel set di risultati restituito.
Code language: SQL (Structured Query Language) (sql)SELECTDISTINCT ON (bcolor) bcolor,fcolorFROMdistinct_demo ORDER BYbcolor,fcolor;
Ecco il risultato:
In questo tutorial, avete imparato ad usare l’istruzione PostgreSQL SELECT DISTINCT
per rimuovere le righe duplicate restituite da una query.
- Questo tutorial è stato utile?
- SìNo