PostgreSQL Unió, Unió MINDEN példákkal

⚡ Okos összefoglaló

PostgreSQL Az UNION két vagy több SELECT utasítás eredményét egyetlen eredményhalmazba egyesíti, és eltávolítja a duplikált sorokat, míg az UNION ALL minden sort megtart, így gyorsabb megoldást kínál, ha a duplikált sorok nem számítanak.

  • 🔗 Kombájn: Az UNION több SELECT utasítás sorait egyetlen eredményhalmazba egyesíti.
  • 🧹 Ismétlődések: Az UNION eltávolítja az ismétlődő sorokat, míg az UNION ALL minden egyező sort megtart.
  • 📐 Szabályok: Minden SELECT függvénynek ugyanannyi, kompatibilis adattípusú oszlopot kell visszaadnia.
  • ↕️ RENDEZÉS: Egyetlen ORDER BY a végén rendezi az egyesített eredményhalmazt.
  • Teljesítmény: A UNION ALL gyorsabban fut, mert kihagyja a duplikátum-eltávolítási lépést.
  • 🤖 MI segítség: A mesterséges intelligencia asszisztensek igazítják az oszlopokat, és választhatnak az UNION és az ALL UNION lehetőségek közül.

PostgreSQL UNION és UNION ALL

Mi a PostgreSQL Unió?

Az PostgreSQL Az UNION operátor egynél több SELECT utasítás eredményhalmazainak egy eredményhalmazba való kombinálására szolgál. A SELECT utasítások eredményeiből a duplikált sorok megszűnnek. Az UNION operátora két feltétel mellett működik:

  • A SELECT lekérdezéseknek ugyanannyi oszlopot kell visszaadniuk.
  • Az összes megfelelő oszlop adattípusának kompatibilisnek kell lennie.

Az UNION operátort általában a nem tökéletesen normalizált kapcsolódó táblákból származó adatok kombinálására használják.

Szintaxis

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

Íme a fenti paraméterek magyarázata:

A kifejezés_1, kifejezés_2, … kifejezés_n azok a számítások vagy oszlopok, amelyeket le kell kérnie.

A táblák azok a táblák, amelyekből rekordokat kell lekérni.

A WHERE feltétel(ek) azok a feltételek, amelyeknek teljesülniük kell a rekordok lekéréséhez.

Jegyzet: Mivel a UNION operátor nem ad vissza ismétlődő elemeket, a UNION DISTINCT használata nem befolyásolja az eredményeket.

PostgreSQL Unió

Az UNION operátor ugyanúgy távolítja el a duplikátumokat, mint SELECT DISTINCT csinálja. Nézzük meg ezt. Van egy Demo nevű adatbázisunk, amely a következő táblázatokkal rendelkezik:

Könyv:

PostgreSQL Unió

Ár:

PostgreSQL Unió

Futtassuk a következő parancsot:

SELECT id
FROM Book
UNION
SELECT id
FROM Price;

A parancs a következőt adja vissza:

PostgreSQL Unió

Az azonosító oszlop a Könyv és az Ár táblázatban is megjelenik. Ez azonban csak egyszer jelenik meg az eredményben. Az ok az PostgreSQL Az UNION operátor nem ad vissza ismétlődő elemeket.

PostgreSQL Union All

Ez az operátor több SELECT utasítás eredményhalmazait kombinálja anélkül, hogy eltávolítaná az ismétlődéseket. Az operátor megköveteli, hogy minden SELECT utasításnak hasonló számú mezője legyen a hasonló adattípusú eredményhalmazokban.

Syntax:

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

Íme a fenti paraméterek magyarázata:

A kifejezés_1, kifejezés_2, … kifejezés_n azok a számítások vagy oszlopok, amelyeket le kell kérnie.

A táblák azok a táblák, amelyekből rekordokat kell lekérni.

A WHERE feltétel(ek) azok a feltételek, amelyeknek teljesülniük kell a rekordok lekéréséhez.

Jegyzet: Mindkét SELECT utasításnak azonos számú kifejezést kell tartalmaznia.

A következő táblázatokat fogjuk használni:

Könyv:

PostgreSQL Union All

Ár:

PostgreSQL Union All

Futtassa a következő parancsot:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

A következőt kell visszaadnia:

PostgreSQL Union All

A másolatokat nem távolították el.

RENDEZÉS

Az PostgreSQL A UNION operátor az ORDER BY záradékkal együtt használható a lekérdezés eredményeinek rendezésére. Ennek bemutatására a következő táblázatokat használjuk:

Ár:

RENDEZÉS

Ár2:

RENDEZÉS

Itt található a parancs, amely bemutatja, hogyan kell használni az UNION operátort az ORDER BY záradékkal együtt:

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

A parancs a következőt adja vissza:

RENDEZÉS

A rekordokat az ár oszlop szerint rendeztük. A záradék alapértelmezés szerint növekvő sorrendben rendezi a rekordokat. Ha csökkenő sorrendbe szeretné rendezni őket, adja hozzá a DESC záradékot az alábbiak szerint:

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

A parancs a következőt adja vissza:

RENDEZÉS

A rekordok sorrendje az ár oszlop alapján, csökkenő sorrendben történt.

Mikor használjunk Union és mikor Union All opciót?

Használd az UNION operátort, ha több hasonló szerkezetű, de valamilyen okból szétválasztott táblád van. Akkor hasznos, ha el kell távolítanod vagy meg kell szüntetned az ismétlődő rekordokat.

Használja az UNION ALL operátort, ha nem kell eltávolítania vagy kiküszöbölnie a duplikált rekordokat.

pgAdmin használatával

Most nézzük meg, hogyan hajtható végre mindhárom művelet a pgAdmin használatával.

Hogyan használjuk PostgreSQL Unió a pgAdmin használatával

A következő lépésekben lépésről lépésre bemutatjuk, hogyan kell használni PostgreSQL UNION a pgAdmin-on keresztül:

Step 1) Jelentkezzen be pgAdmin fiókjába.

Step 2) A bal oldali navigációs sávon kattintson az Adatbázisok, majd a Demó elemre.

Felhasználás PostgreSQL Unió a pgAdmin használatával

Step 3) Írja be a lekérdezést a lekérdezésszerkesztőbe:

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

Step 4) Kattintson a Végrehajtás gombra.

Felhasználás PostgreSQL Unió a pgAdmin használatával

A következőt kell visszaadnia:

Felhasználás PostgreSQL Unió a pgAdmin használatával

Union All

Step 1) Jelentkezzen be pgAdmin fiókjába.

Step 2) A bal oldali navigációs sávon kattintson az Adatbázisok, majd a Demó elemre.

Felhasználás PostgreSQL Union All A pgAdmin használatával

Step 3) Írja be a lekérdezést a lekérdezésszerkesztőbe:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Step 4) Kattintson a Végrehajtás gombra.

Felhasználás PostgreSQL Union All A pgAdmin használatával

A következőt kell visszaadnia:

Felhasználás PostgreSQL Union All A pgAdmin használatával

RENDEZÉS

Az UNION ALL operátor kombinálható az ORDER BY záradékkal, hogy az eredményeket az eredményhalmazban rendezze. Például:

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

A parancs a következőt adja vissza:

Felhasználás PostgreSQL MEGRENDELÉS A pgAdmin segítségével

Az eredményeket megrendelték.

Töltse le az oktatóanyagban használt adatbázist

GYIK

Az UNION ALL gyorsabb, mert egyszerűen összefűzi a sorokat. Az UNION függvénynek rendeznie vagy hashelnie kell az egyesített sorokat a duplikátumok eltávolítása érdekében, ami többletterhelést jelent. Amikor a duplikátumok nem számítanak, az UNION ALL a hatékonyabb választás.

Igen. Egy UNION minden SELECT függvényének ugyanannyi oszlopot kell visszaadnia, és az egyező oszlopoknak kompatibilis adattípusokkal kell rendelkezniük ugyanabban a sorrendben. Egyébként PostgreSQL hibát okoz, és a lekérdezés sikertelen.

Igen. Az oszlopnevek eltérhetnek, mivel az UNION függvény pozíció, nem pedig név alapján egyezteti az oszlopokat. Az adattípusoknak továbbra is kompatibilisnek kell lenniük, és az eredményhalmaz az első SELECT utasítás oszlopneveit használja.

Az UNION két eredményhalmaz sorait függőlegesen egyetlen oszloplistába halmozza, eltávolítva az ismétlődéseket. A JOIN függvény különböző táblák oszlopait vízszintesen egyesíti egy kapcsolódó kulcs alapján, így a sorokat a hozzáfűzés helyett szélesíti.

Az ORDER BY rendezi a végső összesített eredményt, tehát PostgreSQL csak egy ORDER BY utasítást engedélyez az utolsó SELECT után. Az egyes lekérdezések elsőbbségként való rendezése értelmetlen lenne, ha a soraikat összevonnánk.

Az olyan mesterséges intelligencia asszisztensek, mint a GitHub Copilot, igazítják az egyes SELECT-ek oszloplistáit, megjelölik az egyező adattípusokat, és a duplikátumok megtartása alapján UNION vagy UNION ALL típust javasolnak, csökkentve ezzel a gyakori lekérdezési hibákat.

Igen. A táblázatok és a cél vizsgálatával egy mesterséges intelligencia asszisztens meg tudja állapítani, hogy vannak-e ismétlődő sorok, és hogy vannak-e értelmesek-e, majd a sebesség növelése érdekében az ÖSSZES UNIÓT javasolja, ha az ismétlődő sorok elfogadhatók, vagy az ÖSSZES UNIÓT, ha el kell távolítani őket.

Az UNION függvény visszaadja a mindkét lekérdezésben található sorokat. Az INTERSECT függvény csak a mindkét lekérdezésben megtalálható sorokat adja vissza, az EXCEPT függvény pedig az első lekérdezésben található sorokat adja vissza, a másodikban találhatóakat nem. Mindhárom lekérdezés alapértelmezés szerint eltávolítja a duplikált sorokat.

Foglald össze ezt a bejegyzést a következőképpen: