sql >> Databáze >  >> RDS >> Database

SQL Union – Komplexní průvodce operátorem UNION

Při práci s daty v databázích máme často tendenci používat operátory sady v SQL, abychom získali data podle našich požadavků kombinací dvou nebo více příkazů SELECT. V tomto článku o SQL UNION se budu zabývat operátorem UNION používaným k načítání dat v následujícím pořadí:

  • Co je operátor SQL UNION?
  • Syntaxe:
    1. Syntaxe UNION
    2. Syntaxe UNION ALL
  • Rozdíly mezi UNION a UNION ALL
  • Příklady SQL UNION:
    1. Příklad operátora UNION
    2. Příklad operátoru UNION ALL
    3. UNION s aliasy SQL
    4. UNION s klauzulí WHERE
    5. SPOJETE VŠECHNO s klauzulí WHERE
    6. UNION s JOINS
    7. SPOJTE VŠECHNY pomocí JOINS

Začněme!

Co je operátor SQL UNION?

Jak název napovídá, tento operátor/klauzule se používá ke spojení výsledků dvou nebo více příkazů SELECT. Zde musí mít každý příkaz SELECT použitý v příkazu UNION stejný počet sloupců ve stejném pořadí. Také všechny sloupce přítomné v příkazech SELECT musí mít podobné datové typy.

Klauzule UNION poskytuje jako výstup pouze jedinečné hodnoty. Pro případ, že chcete duplicitní hodnoty, musíte použít klauzuli UNION ALL.

V tomto článku o SQL UNION dále porozumíme syntaxi.

Syntaxe SQL UNION

Syntaxe UNION

SELECT Column1, Column2, Column3, ..., ColumnN FROM Table1
UNION
SELECT Column1, Column2, Column3, ..., ColumnN FROM Table2;

Syntaxe UNION ALL

SELECT Column1, Column2, Column3, ..., ColumnN FROM Table1
UNION ALL
SELECT Column1, Column2, Column3, ..., ColumnN FROM Table2;

Posuneme-li se v tomto článku dále, dovolte nám pochopit rozdíly mezi UNION a UNION ALL.

Rozdíly mezi SQL UNION a UNION ALL

UNION UNION ALL
Spojí dvě nebo více sad výsledků a nezachová duplicitní hodnoty. Spojí dvě nebo více sad výsledků a zachová duplicitní hodnoty.
Syntax: UNION
Syntax: UNION ALL

Dále v tomto článku o SQL UNION pochopíme různé způsoby použití tohoto operátoru.

Příklady SQL UNION a UNION ALL

Pro vaše lepší pochopení zvážím následující tabulky, abych vám ukázal různé příklady.

Tabulka zaměstnanců

EmpID Název EmpAge Město PSČ Země
1 Emma 23 Berlín 12109 Německo
2 Rahul 26 Bombaj 400015 Indie
3 Aayra 24 New York 10014 USA
4 Jan 32 Londýn E1 7AE Velká Británie
5 Derek 29 New York 10012 USA

Tabulka projektů

ID projektu Název Pracovní dny Město PSČ Země
1 Projekt 1 10 Berlín 12109 Německo
2 Projekt 2 7 Bombaj 400015 Indie
3 Projekt 3 20 Dillí 110006 Indie
4 Projekt 4 15 Bombaj 400015 Indie
5 Projekt 5 28 Berlín 12109 Německo

Začněme příklady.

Příklady SQL UNION

Příklad operátora UNION

Napište dotaz pro načtení různých měst z tabulky Zaměstnanci a projekty.

SELECT City FROM Employees
UNION
SELECT City FROM Projects
ORDER BY City;

Výstup:

Město

Berlín

Dillí

Londýn

Bombaj

New York

Příklad operátora UNION ALL

Napište dotaz a načtěte města z tabulky Zaměstnanci a projekty. Zde musí být zahrnuty duplicitní hodnoty.

 
SELECT City FROM Employees
UNION ALL
SELECT City FROM Projects
ORDER BY City; 

Výstup:

Město

Berlín

Berlín

Berlín

Dillí

Londýn

Bombaj

Bombaj

Bombaj

New York

New York

Dále v tomto článku pochopíme, jak používat klauzuli UNION s aliasy SQL.

UNION s aliasy SQL

Aliasy SQL se používají k přidělení dočasného názvu tabulce nebo sloupci. Pojďme tedy napsat dotaz na seznam všech unikátních zaměstnanců a projektů.

SELECT 'Employee' AS Type, Name, City, Country
FROM Employees
UNION
SELECT 'Project', Name, City, Country
FROM Projects;

Výstup:

Typ Jméno Město Země
Zaměstnanec Emma Berlín Německo
Zaměstnanec Rahul Bombaj Indie
Zaměstnanec Aayra New York USA
Zaměstnanec Jan Londýn Velká Británie
Zaměstnanec Derek New York USA
Projekt Projekt 1 Berlín Německo
Projekt Projekt 2 Bombaj Indie
Projekt Projekt 3 Dillí Indie
Projekt Projekt 4 Bombaj Indie
Projekt Projekt 5 Berlín Německo

UNION s klauzulí WHERE

Napište dotaz a načtěte jednotlivá indická města a jejich poštovní směrovací čísla z tabulky Zaměstnanci a Projekty.

SELECT City, PostalCode, Country FROM Employees
WHERE Country='India'
UNION
SELECT City, PostalCode, Country FROM Projects
WHERE Country='India'
ORDER BY City;

Výstup:

Město PSČ Země
Dillí 110006 Indie
Bombaj 400015 Indie

UNION ALL s klauzulí WHERE

Napište dotaz a načtěte indická města a jejich poštovní směrovací čísla z tabulky Zaměstnanci i Projekty, kde jsou povoleny duplicitní hodnoty

SELECT City, PostalCode, Country FROM Employees
WHERE Country='India'
UNION ALL
SELECT City, PostalCode, Country FROM Projects
WHERE Country='India'
ORDER BY City;

Výstup:

Město PSČ Země
Dillí 110006 Indie
Bombaj 400015 Indie
Bombaj 400015 Indie
Bombaj 400015 Indie

Postupem v tomto článku vpřed pochopíme, jak používat klauzule UNION a UNION ALL s JOINS. JOINS v SQL jsou příkazy, které se používají ke spojení řádků ze dvou nebo více tabulek na základě souvisejícího sloupce mezi těmito tabulkami.

UNION s JOINS

Operátor SQL UNION lze použít s SQL JOINS k načtení dat ze dvou různých tabulek. Vezmu v úvahu následující tabulku spolu s tabulkou Zaměstnanci jako příklad.

Tabulka ProjectDetails

PID Pracovní dny EmpID CostforProject
11 12 4 20 000
22 16 3 35 000
33 30 1 60 000
44 25 3 45 000
55 21 1 50 000
SELECT  EmpID, Name, CostforProject
   FROM Employees
   LEFT JOIN ProjectDetails
   ON Employees.EmpID = ProjectDetails.EmpID
UNION
   SELECT  EmpID, Name, CostforProject
   FROM Employees
   RIGHT JOIN ProjectDetails
   ON Employees.EmpID = ProjectDetails.EmpID;

Výstup:

EmpID Jméno CostforProject
1 Emma 60 000
1 Emma 50 000
2 Rahul NULL
3 Aayra 35 000
3 Aayra 45 000
4 Jan 20 000
5 Derek NULL

SPOJETE VŠECHNY s JOINS

Napište dotaz pro získání EmpID, Name a CostforProject z tabulky Employees a ProjectDetails, kde jsou povoleny duplicitní hodnoty.

SELECT  EmpID, Name, CostforProject
   FROM Employees
   LEFT JOIN ProjectDetails
   ON Employees.EmpID = ProjectDetails.EmpID
UNION ALL
   SELECT  EmpID, Name, CostforProject
   FROM Employees
   RIGHT JOIN ProjectDetails
   ON Employees.EmpID = ProjectDetails.EmpID;

Výstup:

EmpID Jméno CostforProject
1 Emma 60 000
1 Emma 50 000
2 Rahul NULL
3 Aayra 35 000
3 Aayra 45 000
4 Jan 20 000
5 Derek NULL
4 Jan 20 000
3 Aayra 35 000
1 Emma 60 000
3 Aayra 35 000
1 Emma 50 000

Tím se dostávám na konec tohoto článku o SQL UNION. Doufám, že se vám tento článek o SQL UNION líbil. Viděli jsme různé způsoby použití příkazů UNION a UNION ALL, které vám pomohou psát dotazy. Pokud se chcete dozvědět více o MySQL a poznat tuto open source relační databázi, podívejte se na naši MySQL DBA Certifikační školení který přichází s instruktorem vedeným živým školením a reálnými zkušenostmi z projektů. Toto školení vám pomůže porozumět MySQL do hloubky a pomůže vám dosáhnout zvládnutí tohoto předmětu.

Máte na nás otázku? Uveďte to prosím v sekci komentářů „SQL UNION“ a já se vám ozvu.


  1. Rozdělte struny správným způsobem – nebo dalším nejlepším způsobem

  2. Jak odstranit úvodní nuly z dat v Oracle

  3. Odstranění položky z ListView a databáze pomocí OnItemClickListener

  4. Funkce Postgres vrací tabulku, která nevrací data ve sloupcích