„PostgreSQL Union“, „Union ALL“ su pavyzdžiais

Kas yra „PostgreSQL Union“?

„PostgreSQL UNION“ operatorius naudojamas rezultatų rinkiniams iš kelių SELECT sakinių sujungti į vieną rezultatų rinkinį. Visos pasikartojančios eilutės iš SELECT teiginių rezultatų pašalinamos. UNION operatorius dirba dviem sąlygomis:

  • Užklausos SELECT PRIVALO grąžinti panašų skaičių užklausų.
  • Visų atitinkamų stulpelių duomenų tipai turi būti suderinami.

UNION operatorius paprastai naudojamas sujungti duomenis iš susijusių lentelių, kurios nebuvo normalizuotos.

Šioje „PostgreSQL“ pamokoje sužinosite:

Sintaksė

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

Štai aukščiau išvardytų parametrų paaiškinimas:

Išraiška_1, išraiška_2, ... išraiška_n yra skaičiavimai arba stulpeliai, kuriuos reikia gauti.

Lentelės yra lentelės, iš kurių reikia gauti įrašus.

WHERE sąlyga (-os) yra sąlygos, kurios turi būti įvykdytos norint gauti įrašus.

Pastaba: kadangi UNION operatorius negrąžina dublikatų, UNION DISTINCT naudojimas neturės įtakos rezultatams.

Sąjunga

UNION operatorius pašalina dublikatus. Parodykime tai.

Turime duomenų bazę pavadinimu „Demo“ su šiomis lentelėmis:

Knyga:

Kaina:

Vykdykime šią komandą: | _+_ |

Komanda grąžins:

Stulpelis id rodomas lentelėse Knyga ir Kaina. Tačiau rezultatas pasirodo tik vieną kartą. Priežastis ta, kad „PostgreSQL UNION“ operatorius negrąžina dublikatų.

Sąjunga Visi

Šis operatorius sujungia rezultatų rinkinius iš daugiau nei vieno SELECT sakinio, nepašalindamas dublikatų. Operatorius reikalauja, kad kiekviename SELECT sakinyje būtų panašus laukų skaičius panašių duomenų tipų rezultatų rinkiniuose.

Sintaksė: | _+_ |

Štai aukščiau išvardytų parametrų paaiškinimas:

Išraiška_1, išraiška_2, ... išraiška_n yra skaičiavimai arba stulpeliai, kuriuos reikia gauti.

Lentelės yra lentelės, iš kurių reikia gauti įrašus.

WHERE sąlyga (-os) yra sąlygos, kurios turi būti įvykdytos norint gauti įrašus.

Pastaba: abi išraiškos turi turėti vienodą skaičių išraiškų.

Mes naudosime šias lenteles:

Knyga:

Kaina:

Vykdykite šią komandą: | _+_ |

Tai turėtų grąžinti:

Dublikatai nebuvo pašalinti.

RŪŠIUOTI PAGAL

Užklausos rezultatams užsisakyti galima naudoti „PostgreSQL UNION“ operatorių kartu su sąlyga ORDER BY. Norėdami tai parodyti, naudosime šias lenteles:

Kaina:

Kaina2:

Čia yra komanda, parodanti, kaip naudoti UNION operatorių kartu su sąlyga ORDER BY: | _+_ |

Komanda grąžins:

Įrašai buvo užsakyti pagal kainų stulpelį. Sąlyga pagal numatytuosius nustatymus įrašus tvarko didėjančia tvarka. Norėdami juos užsisakyti mažėjančia tvarka, pridėkite DESC sąlygą, kaip parodyta žemiau: | _+_ |

Komanda grąžins:

Įrašai buvo užsakyti pagal kainų stulpelį mažėjančia tvarka.

Kada naudoti „Union“ ir kada naudoti „Union all“?

Naudokite „UNION“ operatorių, jei turite kelias panašios struktūros lenteles, bet dėl ​​priežasties suskaidytas. Tai gerai, kai reikia pašalinti/pašalinti pasikartojančius įrašus.

Naudokite UNION ALL operatorių, kai nereikia pašalinti/pašalinti pasikartojančių įrašų.

Naudojant pgAdmin

Dabar pažiūrėkime, kaip visi trys veiksmai buvo atlikti naudojant „pgAdmin“.

Sąjunga

Norėdami tai padaryti naudodami „pgAdmin“, atlikite šiuos veiksmus:

1 žingsnis) Prisijunkite prie savo „pgAdmin“ paskyros.

2 žingsnis)

  1. Naršymo juostoje kairėje spustelėkite Duomenų bazės.
  2. Spustelėkite Demo.

3 veiksmas) Įveskite užklausą užklausų redaktoriuje: | _+_ |

4 veiksmas) Spustelėkite mygtuką Vykdyti.

Tai turėtų grąžinti:

Sąjunga Visi

1 žingsnis) Prisijunkite prie savo „pgAdmin“ paskyros.

2 žingsnis)

  1. Kairėje esančioje naršymo juostoje spustelėkite Duomenų bazės.
  2. Spustelėkite Demo.

3 veiksmas) Įveskite užklausą užklausų redaktoriuje: | _+_ |

4 veiksmas) Spustelėkite mygtuką Vykdyti.

Tai turėtų grąžinti:

RŪŠIUOTI PAGAL

UNION ALL operatorius gali būti derinamas su sąlyga ORDER BY, kad būtų galima užsisakyti rezultatų rezultatų rinkinį. Pavyzdžiui: | _+_ |

Komanda grąžins:

Rezultatai buvo užsakyti.

Santrauka:

  • „PostgreSQL UNION“ operatorius sujungia daugiau nei vieno SELECT teiginio rezultatus į vieną rezultatų rinkinį.
  • UNION operatorius negrąžina pasikartojančių įrašų.
  • Norėdami užsisakyti rezultatus, derinkite juos su sąlyga ORDER BY.
  • UNION ALL operatorius sujungia daugiau nei vieno SELECT teiginio rezultatus į vieną rezultatų rinkinį.
  • UNION ALL operatorius nepašalina dublikatų.

Atsisiųskite šioje pamokoje naudojamą duomenų bazę