PostgreSQL Unione, Unione TUTTO con esempi

⚡ Riepilogo intelligente

PostgreSQL UNION combina i risultati di due o più istruzioni SELECT in un unico set di risultati ed elimina le righe duplicate, mentre UNION ALL mantiene tutte le righe, offrendo un'opzione più veloce quando i duplicati non sono un problema.

  • 🔗 Combina: UNION unisce le righe provenienti da più istruzioni SELECT in un unico set di risultati.
  • 🧹 duplicati: UNION rimuove le righe duplicate, mentre UNION ALL mantiene tutte le righe corrispondenti.
  • 📐 Regole: Ogni istruzione SELECT deve restituire lo stesso numero di colonne con tipi di dati compatibili.
  • ORDINATO DA: Una singola clausola ORDER BY alla fine ordina il set di risultati combinato.
  • Performance: UNION ALL è più veloce perché salta la fase di rimozione dei duplicati.
  • 🤖 Aiuto tramite IA: Gli assistenti basati sull'IA allineano le colonne e scelgono tra UNION e UNION ALL.

PostgreSQL UNIONE e UNIONE TUTTI

Cosa è PostgreSQL Unione?

Migliori PostgreSQL L'operatore UNION viene utilizzato per combinare set di risultati da più di un'istruzione SELECT in un set di risultati. Tutte le righe duplicate dai risultati delle istruzioni SELECT vengono eliminate. L'operatore UNION funziona in due condizioni:

  • Le query SELECT devono restituire lo stesso numero di colonne.
  • I tipi di dati di tutte le colonne corrispondenti devono essere compatibili.

L'operatore UNION viene normalmente utilizzato per combinare dati di tabelle correlate che non sono state normalizzate perfettamente.

Sintassi

SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)]
UNION
SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)];

Ecco una spiegazione per i parametri di cui sopra:

Expression_1, Expression_2, … Expression_n sono i calcoli o le colonne che devi recuperare.

Le tabelle sono le tabelle da cui è necessario recuperare i record.

Le condizioni WHERE sono le condizioni che devono essere soddisfatte affinché i record possano essere recuperati.

Nota: Poiché l'operatore UNION non restituisce duplicati, l'utilizzo di UNION DISTINCT non avrà alcun impatto sui risultati.

PostgreSQL Unione

L'operatore UNION rimuove i duplicati, nello stesso modo in cui SELEZIONA DISTINCT Lo fa. Dimostriamolo. Abbiamo un database chiamato Demo con le seguenti tabelle:

Libro:

PostgreSQL Unione

Prezzo:

PostgreSQL Unione

Eseguiamo il seguente comando:

SELECT id
FROM Book
UNION
SELECT id
FROM Price;

Il comando restituirà quanto segue:

PostgreSQL Unione

La colonna id appare sia nella tabella Libro che in quella Prezzo. Tuttavia, appare solo una volta nel risultato. Il motivo è quello PostgreSQL L'operatore UNION non restituisce duplicati.

PostgreSQL Unione tutto

Questo operatore combina set di risultati da più di un'istruzione SELECT senza rimuovere i duplicati. L'operatore richiede che ciascuna istruzione SELECT abbia un numero simile di campi in set di risultati con tipi di dati simili.

Sintassi:

SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)]
UNION ALL
SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)];

Ecco una spiegazione per i parametri di cui sopra:

Expression_1, Expression_2, … Expression_n sono i calcoli o le colonne che devi recuperare.

Le tabelle sono le tabelle da cui è necessario recuperare i record.

Le condizioni WHERE sono le condizioni che devono essere soddisfatte affinché i record possano essere recuperati.

Nota: Entrambe le istruzioni SELECT devono contenere lo stesso numero di espressioni.

Utilizzeremo le seguenti tabelle:

Libro:

PostgreSQL Unione tutto

Prezzo:

PostgreSQL Unione tutto

Eseguire il seguente comando:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Dovrebbe restituire quanto segue:

PostgreSQL Unione tutto

I duplicati non sono stati rimossi.

ORDINATO DA

Migliori PostgreSQL L'operatore UNION può essere utilizzato insieme alla clausola ORDER BY per ordinare i risultati della query. Per dimostrarlo, utilizzeremo le seguenti tabelle:

Prezzo:

ORDINATO DA

Prezzo2:

ORDINATO DA

Ecco il comando che dimostra come utilizzare l'operatore UNION insieme alla clausola ORDER BY:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price;

Il comando restituirà quanto segue:

ORDINATO DA

I record sono stati ordinati in base alla colonna del prezzo. Per impostazione predefinita, la clausola ordina i record in ordine crescente. Per ordinarli in ordine decrescente, aggiungi la clausola DESC come mostrato di seguito:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

Il comando restituirà quanto segue:

ORDINATO DA

I record sono stati ordinati in base alla colonna del prezzo in ordine decrescente.

Quando utilizzare Union e quando utilizzare Union All?

Utilizza l'operatore UNION quando hai più tabelle con una struttura simile ma suddivise per un motivo specifico. È utile quando devi rimuovere o eliminare record duplicati.

Utilizza l'operatore UNION ALL quando non è necessario rimuovere o eliminare record duplicati.

Utilizzando pgAdmin

Vediamo ora come vengono eseguite tutte e tre le azioni utilizzando pgAdmin.

Istruzioni per l’uso: PostgreSQL Unione utilizzando pgAdmin

Di seguito è riportato un processo passo passo su come utilizzare PostgreSQL UNIONE tramite pgAdmin:

Passo 1) Accedi al tuo account pgAdmin.

Passo 2) Dalla barra di navigazione a sinistra, fai clic su Database, quindi su Demo.

Usa il  PostgreSQL Unione utilizzando pgAdmin

Passo 3) Digita la query nell'editor di query:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

Passo 4) Fare clic sul pulsante Esegui.

Usa il  PostgreSQL Unione utilizzando pgAdmin

Dovrebbe restituire quanto segue:

Usa il  PostgreSQL Unione utilizzando pgAdmin

Unione tutto

Passo 1) Accedi al tuo account pgAdmin.

Passo 2) Dalla barra di navigazione a sinistra, fai clic su Database, quindi su Demo.

Usa il  PostgreSQL Union All utilizzando pgAdmin

Passo 3) Digita la query nell'editor di query:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Passo 4) Fare clic sul pulsante Esegui.

Usa il  PostgreSQL Union All utilizzando pgAdmin

Dovrebbe restituire quanto segue:

Usa il  PostgreSQL Union All utilizzando pgAdmin

ORDINATO DA

L'operatore UNION ALL può essere combinato con la clausola ORDER BY per ordinare i risultati nel set di risultati. Per esempio:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price
ORDER BY id;

Il comando restituirà quanto segue:

Usa il  PostgreSQL ORDINA PER Utilizzando pgAdmin

I risultati sono stati ordinati.

Scarica il database utilizzato in questo tutorial

DOMANDE FREQUENTI

UNION ALL è più veloce perché si limita a concatenare le righe. UNION, invece, richiede l'ordinamento o l'hashing delle righe combinate per rimuovere i duplicati, il che comporta un sovraccarico. Quando i duplicati non rappresentano un problema, UNION ALL è la scelta più efficiente.

Sì. Ogni SELECT in un'UNION deve restituire lo stesso numero di colonne e le colonne corrispondenti devono avere tipi di dati compatibili nello stesso ordine. Altrimenti PostgreSQL genera un errore e la query fallisce.

Sì. I nomi delle colonne possono essere diversi perché UNION confronta le colonne in base alla posizione, non al nome. I tipi di dati devono comunque essere compatibili e il set di risultati utilizza i nomi delle colonne della prima istruzione SELECT.

UNION impila verticalmente le righe di due set di risultati in un'unica colonna, rimuovendo i duplicati. JOIN, invece, combina orizzontalmente le colonne di tabelle diverse in base a una chiave correlata, espandendo le righe anziché aggiungerle.

ORDER BY ordina il risultato combinato finale, quindi PostgreSQL Consente un solo ORDER BY posizionato dopo l'ultima SELECT. Ordinare prima le singole query sarebbe inutile una volta che le loro righe vengono unite.

Gli assistenti basati sull'intelligenza artificiale, come GitHub Copilot, allineano gli elenchi di colonne di ogni istruzione SELECT, segnalano i tipi di dati non corrispondenti e consigliano UNION o UNION ALL a seconda che i duplicati debbano essere mantenuti o meno, riducendo gli errori comuni nelle query.

Sì. Analizzando le tabelle e l'obiettivo, un assistente basato sull'IA può stabilire se le righe duplicate sono possibili e significative, suggerendo quindi di utilizzare UNION ALL quando i duplicati sono accettabili per velocizzare il processo, oppure UNION quando devono essere rimossi.

UNION restituisce le righe trovate in una delle due query. INTERSECT restituisce solo le righe presenti in entrambe le query, mentre EXCEPT restituisce le righe presenti nella prima query ma non nella seconda. Tutte e tre le funzioni rimuovono i duplicati per impostazione predefinita.

Riassumi questo post con: