DISTINTO nel PostgreSQL: Seleziona, Ordina per e Limita (Esempi)
⚡ Riepilogo intelligente
DISTINTO nel PostgreSQL Viene utilizzato con un'istruzione SELECT per rimuovere le righe duplicate e restituire solo i valori univoci. Tratta la sintassi SELECT, la shell SQL e pgAdmin, DISTINCT su colonne singole e multiple e la differenza tra DISTINCT e GROUP BY.
È possibile recuperare i dati dalla tabella utilizzando un'istruzione SELECT.
Sintassi:
SELECT [column names] FROM [table_name]
Qui,
- nomi delle colonne: Nome delle colonne di cui si desidera recuperare il valore.
- A PARTIRE DAL: La clausola FROM definisce una o più tabelle di origine per la SELECT.
- nome_tabella: Il nome di una tabella esistente che si desidera interrogare.
Che cosa è DISTINTO in PostgreSQL?
Migliori DISTINCT clausola in PostgreSQL viene utilizzato con un'istruzione SELECT per rimuovere le righe duplicate dal set di risultati. Quando una colonna contiene valori ripetuti, SELECT DISTINCT restituisce solo i valori univoci, mantenendoping Una singola riga per ogni gruppo di duplicati. Questo è utile quando si desidera un elenco di voci distinte, come città clienti uniche o categorie di prodotti, senza ripetizioni.
La funzione DISTINCT valuta tutte le colonne elencate nell'istruzione SELECT per stabilire se una riga è univoca. PostgreSQL Offre anche la funzionalità DISTINCT ON, che restituisce la prima riga per ogni valore distinto di un'espressione specificata. È possibile combinare DISTINCT con ORDER BY per controllare quali righe vengono visualizzate e con LIMIT per limitare il numero di risultati.
PostgreSQL Seleziona Istruzione in SQL Shell
Passo 1) Abbiamo una tabella "tutorials" con due colonne, "id" e "tutorial_name". Proviamo a interrogarla. Utilizziamo la seguente query per elencare i dati presenti nella tabella:
SELECT id,tutorial_name FROM tutorials;
NOTA: Utilizza il comando \c per connetterti al database che contiene la tabella che desideri interrogare. Nel nostro caso, siamo connessi al database guru99.
Passo 2) Se si desidera visualizzare tutte le colonne di una determinata tabella, è possibile utilizzare il carattere jolly asterisco (*). In questo modo, verranno controllate tutte le possibilità e, di conseguenza, verranno visualizzate tutte le colonne.
SELECT * FROM tutorials;
Visualizza tutti i record della tabella dei tutorial.
Passo 3) È possibile utilizzare la clausola ORDER per ordinare i dati in una tabella in base a una colonna particolare. La clausola ORDER organizza i dati in ordine dalla A alla Z.
SELECT * FROM tutorials ORDER BY id;
Puoi ordinare dalla Z alla A usando "DESC" dopo l'istruzione "ORDER BY".
SELECT * FROM tutorials ORDER BY id DESC;
Passo 4) Il SELECT DISTINCT in PostgreSQL La clausola può essere utilizzata per rimuovere righe duplicate dal risultato. Mantiene una riga per ciascun gruppo di duplicati.
Syntax: SELECT DISTINCT column_1 FROM table_name;
Eseguiamo query su Postgres Select Distinct id values from our table tutorials usando distinct querys in PostgreSQL:
SELECT DISTINCT(id) FROM tutorials;
Passo 5) È possibile utilizzare il PostgreSQL La clausola LIMIT consente di limitare il numero di record restituiti dalla query SELECT.
SELECT * FROM tutorials LIMIT 4;
PostgreSQL Seleziona l'istruzione in pgAdmin
Passo 1) Nell'albero degli oggetti:
- Fare clic con il pulsante destro del mouse sulla tabella.
- Seleziona gli script.
- Fai clic su SELEZIONA SCRIPT.
Passo 2) Nel riquadro a destra:
- Modifica la query SELECT se necessario.
- Fai clic sull'icona del fulmine.
- Osserva l'output.
DISTINTO su più colonne
La clausola SELECT DISTINCT può essere applicata anche a più di una colonna. Quando si elencano più colonne dopo DISTINCT, PostgreSQL Considera la combinazione di tali colonne come un'unità e rimuove le righe in cui l'intera combinazione è duplicata.
Syntax: SELECT DISTINCT column_1, column_2 FROM table_name;
Ad esempio, per restituire le combinazioni univoche di tutorial_name e id dalla tabella dei tutorial:
SELECT DISTINCT tutorial_name, id FROM tutorials;
In questo caso, una riga viene rimossa solo quando sia tutorial_name che id corrispondono a un'altra riga. Se due righe condividono lo stesso tutorial_name ma hanno valori di id diversi, entrambe vengono mantenute, perché la combinazione è comunque univoca. È importante ricordare questo comportamento: DISTINCT non rimuove i duplicati da una singola colonna quando ne vengono selezionate diverse; rimuove i duplicati dall'intero set di colonne selezionate.
DISTINCT vs GROUP BY in PostgreSQL
Sia DISTINCT che GROUP BY possono rimuovere i valori duplicati, ma servono a scopi diversi:
- DISTINCT restituisce semplicemente le righe univoche dal risultato ed è ideale quando hai bisogno solo di un elenco senza duplicati.
- RAGGRUPPA PER raggruppa le righe che condividono un valore in modo da poter applicare funzioni di aggregazione come COUNT, SUM o AVG a ciascun gruppo.
Ad esempio, entrambe le query seguenti restituiscono i valori ID univoci:
SELECT DISTINCT id FROM tutorials; SELECT id FROM tutorials GROUP BY id;
Utilizza DISTINCT per un semplice elenco di valori univoci e GROUP BY quando hai bisogno anche di un calcolo per gruppo, ad esempio per contare quanti tutorial condividono ciascun ID. Nelle query semplici, il pianificatore spesso offre prestazioni simili con entrambi i metodi, ma GROUP BY è necessario ogni volta che è coinvolta un'aggregazione.
Cheat Sheet
SELECT [column names] FROM [table_name] [clause]
Ecco i vari parametri:
- nomi delle colonne: Nome delle colonne di cui si desidera recuperare il valore.
- A PARTIRE DAL: La clausola FROM definisce una o più tabelle di origine per la SELECT.
- nome_tabella: Il nome di una tabella esistente che si desidera interrogare.
Varie clausole sono:
| Comandi | Descrizione |
|---|---|
| * | Recupera i record per tutte le righe della tabella. |
| DISTINCT | DISTINTO nel PostgreSQL ti aiuta a rimuovere i duplicati dai risultati. |
| ORDINATO DA | Ordina le righe in base a una colonna. L'ordinamento predefinito è crescente. Utilizzare la parola chiave DESC per ordinare in ordine decrescente. |
| LIMITE | Limite in PostgreSQL limita il numero di record restituiti dalla query. |









