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.

  • 🔎 SELEZIONARE: Recupera le colonne da una tabella con SELECT colonna FROM tabella.
  • 🧹 DISTINTO: Rimuovi le righe duplicate e mantieni una sola riga per ogni valore univoco.
  • ORDINATO DA: Ordina in ordine crescente per impostazione predefinita, oppure in ordine decrescente con DESC.
  • 🔢 LIMITE: Limita il numero di record restituiti dalla query.
  • Strumenti: Esegui le stesse query nella shell SQL o in pgAdmin.

DISTINTO nel PostgreSQL

È 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;

PostgreSQL Seleziona Istruzione in SQL Shell

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;

PostgreSQL Seleziona Istruzione in SQL Shell

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;

PostgreSQL Seleziona Istruzione in SQL Shell

Puoi ordinare dalla Z alla A usando "DESC" dopo l'istruzione "ORDER BY".

SELECT * FROM tutorials ORDER BY id DESC;

PostgreSQL Seleziona Istruzione in SQL Shell

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;

PostgreSQL Seleziona Istruzione in SQL Shell

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 Istruzione in SQL Shell

PostgreSQL Seleziona l'istruzione in pgAdmin

Passo 1) Nell'albero degli oggetti:

  1. Fare clic con il pulsante destro del mouse sulla tabella.
  2. Seleziona gli script.
  3. Fai clic su SELEZIONA SCRIPT.

PostgreSQL Seleziona l'istruzione in pgAdmin

Passo 2) Nel riquadro a destra:

  1. Modifica la query SELECT se necessario.
  2. Fai clic sull'icona del fulmine.
  3. Osserva l'output.

PostgreSQL Seleziona l'istruzione in pgAdmin

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.

DOMANDE FREQUENTI

Sì. Gli assistenti basati sull'IA possono trasformare una descrizione in istruzioni SELECT DISTINCT, aggiungere ORDER BY o LIMIT e spiegare il risultato. È comunque consigliabile testare la query sul proprio schema prima di eseguirla in produzione.

Sì. Gli strumenti di intelligenza artificiale possono leggere il piano di query da EXPLAIN ANALYZE e suggerire indici o riscrivere DISTINCT come GROUP BY. È sempre consigliabile validare i suggerimenti con dati reali, poiché le prestazioni dipendono dalle dimensioni della tabella e dagli indici.

DISTINCT rimuove le righe duplicate in tutte le colonne selezionate. DISTINCT ON (espressione) mantiene la prima riga per ogni valore distinto di tale espressione, consentendo di selezionare una riga per gruppo, solitamente in combinazione con ORDER BY.

La funzione DISTINCT può risultare più lenta su tabelle di grandi dimensioni perché deve confrontare e rimuovere i duplicati, spesso utilizzando un ordinamento o una funzione hash. L'utilizzo di indici appropriati e la limitazione delle colonne selezionate contribuiscono a ridurne i costi.

Riassumi questo post con: