MySQL UNION – Teljes oktatóanyag

Mi az az Unió?

Az uniók több SELECT-lekérdezés eredményeit egyesítik egy konszolidált eredményhalmazba.

Ennek működéséhez az egyetlen követelmény, hogy az összes kombinálandó SELECT lekérdezés oszlopainak száma azonos legyen.

Tegyük fel, hogy van két táblázatunk az alábbiak szerint

MySQL UNIONMySQL UNION

Most hozzunk létre egy UNION lekérdezést, amely a DISTINCT segítségével kombinálja a két táblát

SELECT column1, column2 FROM `table1`
UNION DISTINCT
SELECT  column1,column2  FROM `table2`;

Itt az ismétlődő sorok eltávolításra kerülnek, és csak egyedi sorok jelennek meg.

Union-Distinct

Jegyzet: MySQL a DISTINCT záradékot használja alapértelmezettként az UNION lekérdezések végrehajtásakor, ha nincs megadva.

Most hozzunk létre egy UNION-lekérdezést, amely mindkét táblát az ALL használatával kombinálja

SELECT `column1`,` column1` FROM `table1`
UNION ALL
SELECT ` column1`,` column1`  FROM `table2`;

Itt a duplikált sorok szerepelnek, és mivel az ALL-t használjuk.

Unió-Minden

Miért érdemes szakszervezeteket használni?

Tegyük fel, hogy hiba van az adatbázis kialakításában, és két különböző, ugyanarra a célra szánt táblát használ. Ezt a két táblát egybe szeretné vonni, miközben kihagyja az ismétlődő rekordok bemászását az új táblába. Ilyen esetekben használhatja az UNION-t.

Összegzésként

  • Az UNION parancs több SELECT lekérdezés eredményének egyetlen lekérdezésbe való kombinálására szolgál, amely az összes kijelölési lekérdezés sorait tartalmazza.
  • Az oszlopok és adattípusok száma a SELECT utasítások azonosnak kell lennie ahhoz, hogy az UNION parancs működjön.
  • A DISTINCT záradék az UNION lekérdezés eredménykészletéből a duplikált értékek eltávolítására szolgál. MySQL a DISTINCT záradékot használja alapértelmezettként az UNION lekérdezések végrehajtásakor, ha nincs megadva.
  • Az ALL záradék az UNION lekérdezés összes ismétlődő sorának visszaadására szolgál.

Gyakorlati példák a használatára MySQL munkapad

A myFlixDB-ben lehetővé teszi a kombinálást

tagsági_szám és teljes_nevek a Members táblából

dolgoztam, ahol az

movie_id és title a filmek táblázatából

Használhatjuk a következő lekérdezést

SELECT `membership_number`,`full_names` FROM `members`
UNION
SELECT `movie_id`,`title` FROM `movies`;

A fenti szkript végrehajtása MySQL munkapad a myflixdb ellen az alábbi eredményeket adjuk.

membership_number full_names
1 Janet Jones
2 Janet Smith Jones
3 Robert Phil
4 Gloria Williams
5 Leonard Hofstadter
6 Sheldon Cooper
7 Rajesh Koothrappali
8 Leslie Winkle
9 Howard Wolowitz
16 67% Guilty
6 Angels and Demons
4 Code Name Black
5 Daddy's Little Girls
7 Davinci Code
2 Forgetting Sarah Marshal
9 Honey mooners
19 movie 3
1 Pirates of the Caribean 4
18 sample movie
17 The Great Dictator
3 X-Men