PostgreSQL Union, Unione ALL con esempi

Sommario:

Anonim

Cos'è PostgreSQL Union?

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

  • Le query SELECT DEVONO restituire un numero simile di query.
  • I tipi di dati di tutte le colonne corrispondenti devono essere compatibili.

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

In questo tutorial su PostgreSQL imparerai:

  • Cos'è PostgreSQL Union?
  • Sintassi
  • Unione
  • Union All
  • ORDINATO DA
  • Quando usare Union e quando usare Union all?
  • Utilizzando pgAdmin

Sintassi

SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNIONSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];

Ecco una spiegazione per i parametri di cui sopra:

L'espressione_1, l'espressione_2, ... l'espressione_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 per il recupero dei record.

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

Unione

L'operatore UNION rimuove i duplicati. Dimostriamolo.

Abbiamo un database denominato Demo con le seguenti tabelle:

Libro:

Prezzo:

Eseguiamo il seguente comando:

SELECT idFROM BookUNIONSELECT idFROM Price;

Il comando restituirà quanto segue:

La colonna id viene visualizzata sia nella tabella Book che in quella Price. Tuttavia, appare solo una volta nel risultato. Il motivo è che l'operatore PostgreSQL UNION non restituisce duplicati.

Union All

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

Sintassi:

SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNION ALLSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];

Ecco una spiegazione per i parametri di cui sopra:

L'espressione_1, l'espressione_2, ... l'espressione_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 per il recupero dei record.

Nota: entrambe le espressioni devono avere lo stesso numero di espressioni.

Useremo le seguenti tabelle:

Libro:

Prezzo:

Esegui il seguente comando:

SELECT idFROM BookUNION ALLSELECT idFROM price;

Dovrebbe restituire quanto segue:

I duplicati non sono stati rimossi.

ORDINATO DA

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

Prezzo:

Prezzo2:

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

SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price;

Il comando restituirà quanto segue:

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

SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;

Il comando restituirà quanto segue:

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

Quando usare Union e quando usare Union all?

Usa l'operatore UNION quando hai più tabelle con una struttura simile ma divise per un motivo. È utile quando è necessario rimuovere / eliminare record duplicati.

Utilizzare l'operatore UNION ALL quando non è necessario rimuovere / eliminare record duplicati.

Utilizzando pgAdmin

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

Unione

Per ottenere lo stesso risultato tramite pgAdmin, procedere come segue:

Passaggio 1) Accedi al tuo account pgAdmin.

Passo 2)

  1. Dalla barra di navigazione a sinistra, fare clic su Database.
  2. Fare clic su Demo.

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

SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;

Passaggio 4) Fare clic sul pulsante Esegui.

Dovrebbe restituire quanto segue:

Union All

Passaggio 1) Accedi al tuo account pgAdmin.

Passo 2)

  1. Dalla barra di navigazione a sinistra, fai clic su Database.
  2. Fare clic su Demo.

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

SELECT idFROM BookUNION ALLSELECT idFROM price;

Passaggio 4) Fare clic sul pulsante Esegui.

Dovrebbe restituire quanto segue:

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 idFROM BookUNION ALLSELECT idFROM priceORDER BY id;

Il comando restituirà quanto segue:

I risultati sono stati ordinati.

Sommario:

  • L'operatore PostgreSQL UNION combina i risultati di più di un'istruzione SELECT in un set di risultati.
  • L'operatore UNION non restituisce record duplicati.
  • Per ordinare i risultati, combinalo con la clausola ORDER BY.
  • L'operatore UNION ALL combina i risultati di più di un'istruzione SELECT in un set di risultati.
  • L'operatore UNION ALL non rimuove i duplicati.

Scarica il database utilizzato in questo tutorial