PostgreSQL Unire, Unire TOATE cu Exemple

⚡ Rezumat inteligent

PostgreSQL UNION combină rezultatele a două sau mai multe instrucțiuni SELECT într-un singur set de rezultate și elimină rândurile duplicate, în timp ce UNION ALL păstrează fiecare rând, oferind o opțiune mai rapidă atunci când duplicatele nu contează.

  • 🔗 Combina: UNION îmbină rândurile din mai multe instrucțiuni SELECT într-un singur set de rezultate.
  • 🧹 Duplicate: UNION elimină rândurile duplicate, în timp ce UNION ALL păstrează fiecare rând corespondent.
  • 📐 reguli: Fiecare instrucțiune SELECT trebuie să returneze același număr de coloane cu tipuri de date compatibile.
  • ↕️ COMANDA PENTRU: O singură comandă ORDER BY la sfârșit sortează setul de rezultate combinate.
  • Performanță: UNION ALL rulează mai rapid deoarece omite pasul de eliminare a duplicatelor.
  • 🤖 Ajutor AI: Asistenții inteligenți artificiali aliniază coloanele și aleg între UNION și UNION ALL.

PostgreSQL UNIRE și UNIRE TOȚI

Ce Este PostgreSQL Uniune?

PostgreSQL Operatorul UNION este folosit pentru a combina seturi de rezultate din mai multe instrucțiuni SELECT într-un singur set de rezultate. Orice rânduri duplicate din rezultatele instrucțiunilor SELECT sunt eliminate. Operatorul UNION lucrează în două condiții:

  • Interogările SELECT trebuie să returneze același număr de coloane.
  • Tipurile de date ale tuturor coloanelor corespunzătoare trebuie să fie compatibile.

Operatorul UNION este utilizat în mod normal pentru a combina date din tabele înrudite care nu au fost normalizate perfect.

Sintaxă

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)];

Iată o explicație pentru parametrii de mai sus:

Expresia_1, expresia_2, … expresia_n sunt calculele sau coloanele pe care trebuie să le regăsiți.

Tabelele sunt tabelele din care trebuie să recuperați înregistrările.

Condiția(ele) WHERE sunt condițiile care trebuie îndeplinite pentru ca înregistrările să fie recuperate.

Notă: Întrucât operatorul UNION nu returnează duplicate, utilizarea operatorului UNION DISTINCT nu va avea niciun impact asupra rezultatelor.

PostgreSQL Uniune

Operatorul UNION elimină duplicatele, în același mod în care SELECTARE DISTINCT face. Să demonstrăm acest lucru. Avem o bază de date numită Demo cu următoarele tabele:

Carte:

PostgreSQL Uniune

Preț:

PostgreSQL Uniune

Să rulăm următoarea comandă:

SELECT id
FROM Book
UNION
SELECT id
FROM Price;

Comanda va returna următoarele:

PostgreSQL Uniune

Coloana ID apare atât în ​​carte, cât și în tabelul de prețuri. Cu toate acestea, apare o singură dată în rezultat. Motivul este că PostgreSQL Operatorul UNION nu returnează duplicate.

PostgreSQL Unirea Toate

Acest operator combină seturi de rezultate din mai multe instrucțiuni SELECT fără a elimina duplicatele. Operatorul solicită ca fiecare instrucțiune SELECT să aibă un număr similar de câmpuri în seturi de rezultate de tipuri de date similare.

Sintaxă:

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)];

Iată o explicație pentru parametrii de mai sus:

Expresia_1, expresia_2, … expresia_n sunt calculele sau coloanele pe care trebuie să le regăsiți.

Tabelele sunt tabelele din care trebuie să recuperați înregistrările.

Condiția(ele) WHERE sunt condițiile care trebuie îndeplinite pentru ca înregistrările să fie recuperate.

Notă: Ambele instrucțiuni SELECT trebuie să aibă un număr egal de expresii.

Vom folosi următoarele tabele:

Carte:

PostgreSQL Unirea Toate

Preț:

PostgreSQL Unirea Toate

Rulați următoarea comandă:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Ar trebui să returneze următoarele:

PostgreSQL Unirea Toate

Dublatele nu au fost eliminate.

COMANDA DE

PostgreSQL Operatorul UNION poate fi folosit împreună cu clauza ORDER BY pentru a ordona rezultatele interogării. Pentru a demonstra acest lucru, vom folosi următoarele tabele:

Preț:

COMANDA DE

Preț 2:

COMANDA DE

Iată comanda care demonstrează cum se utilizează operatorul UNION împreună cu clauza ORDER BY:

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

Comanda va returna următoarele:

COMANDA DE

Înregistrările au fost ordonate după coloana preț. Clauza ordonează în mod implicit înregistrările în ordine crescătoare. Pentru a le ordona în ordine descrescătoare, adăugați clauza DESC așa cum se arată mai jos:

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

Comanda va returna următoarele:

COMANDA DE

Înregistrările au fost ordonate pe baza coloanei de preț în ordine descrescătoare.

Când se folosește Union și când se folosește Union All?

Folosește operatorul UNION atunci când ai mai multe tabele cu o structură similară, dar divizate dintr-un anumit motiv. Este util atunci când trebuie să elimini sau să elimini înregistrări duplicate.

Utilizați operatorul UNION ALL atunci când nu trebuie să eliminați sau să eliminați înregistrări duplicate.

Folosind pgAdmin

Acum să vedem cum sunt efectuate toate cele trei acțiuni folosind pgAdmin.

Instrucțiuni de utilizare PostgreSQL Unirea folosind pgAdmin

Mai jos este un proces pas cu pas despre cum se utilizează PostgreSQL UNION prin pgAdmin:

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2) Din bara de navigare din stânga, faceți clic pe Baze de date, apoi pe Demo.

Utilizare PostgreSQL Unirea folosind pgAdmin

Pas 3) Introduceți interogarea în editorul de interogări:

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

Pas 4) Faceți clic pe butonul Execute.

Utilizare PostgreSQL Unirea folosind pgAdmin

Ar trebui să returneze următoarele:

Utilizare PostgreSQL Unirea folosind pgAdmin

Unirea Toate

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2) Din bara de navigare din stânga, faceți clic pe Baze de date, apoi pe Demo.

Utilizare PostgreSQL Unirea tuturor utilizând pgAdmin

Pas 3) Introduceți interogarea în editorul de interogări:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Pas 4) Faceți clic pe butonul Execute.

Utilizare PostgreSQL Unirea tuturor utilizând pgAdmin

Ar trebui să returneze următoarele:

Utilizare PostgreSQL Unirea tuturor utilizând pgAdmin

COMANDA DE

Operatorul UNION ALL poate fi combinat cu clauza ORDER BY pentru a ordona rezultatele în setul de rezultate. De exemplu:

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

Comanda va returna următoarele:

Utilizare PostgreSQL COMANDA PRIN Folosind pgAdmin

Rezultatele au fost ordonate.

Descărcați baza de date folosită în acest tutorial

Întrebări frecvente

UNION ALL este mai rapidă deoarece concatenează pur și simplu rândurile. UNION trebuie să sorteze sau să execute hashing pentru a elimina duplicatele, ceea ce adaugă o sarcină suplimentară. Când duplicatele nu contează, UNION ALL este alegerea mai eficientă.

Da. Fiecare SELECT dintr-o UNION trebuie să returneze același număr de coloane, iar coloanele corespondente trebuie să aibă tipuri de date compatibile în aceeași ordine. În caz contrar PostgreSQL generează o eroare și interogarea eșuează.

Da. Numele coloanelor pot diferi deoarece UNION potrivește coloanele după poziție, nu după nume. Tipurile de date trebuie să fie în continuare compatibile, iar setul de rezultate utilizează numele coloanelor din prima instrucțiune SELECT.

O operație UNION stivuiește rândurile a două seturi de rezultate pe verticală într-o singură listă de coloane, eliminând duplicatele. O operație JOIN combină coloane din tabele diferite pe orizontală pe baza unei chei corelate, astfel încât lărgește rândurile în loc să le adauge.

ORDER BY sortează rezultatul final combinat, astfel încât PostgreSQL permite plasarea unei singure instrucțiuni ORDER BY după ultima instrucțiune SELECT. Sortarea mai întâi a interogărilor individuale ar fi lipsită de sens odată ce rândurile lor sunt îmbinate.

Asistenții de inteligență artificială, precum GitHub Copilot, aliniază listele de coloane ale fiecărui SELECT, semnalează tipurile de date nepotrivite și recomandă UNION sau UNION ALL în funcție de păstrarea duplicatelor, reducând erorile frecvente în interogări.

Da. Examinând tabelele și obiectivul, un asistent cu inteligență artificială poate stabili dacă rândurile duplicate sunt posibile și relevante, apoi poate sugera UNION ALL atunci când duplicatele sunt acceptabile pentru a câștiga viteză sau UNION atunci când acestea trebuie eliminate.

UNION returnează rândurile găsite în oricare dintre interogări. INTERSECT returnează doar rândurile prezente în ambele interogări, iar EXCEPT returnează rândurile din prima interogare, dar nu și din a doua. Toate trei elimină duplicatele în mod implicit.

Rezumați această postare cu: