Mi az unió?
A szakszervezetek több SELECT lekérdezés eredményeit egyesítik egy összevont eredményhalmazba.
Ennek működéséhez csak az szükséges, hogy az oszlopok száma megegyezzen az összes kombinálandó SELECT lekérdezéssel.
Tegyük fel, hogy két táblázatunk van az alábbiak szerint
Most hozzunk létre egy UNION lekérdezést, amely a DISTINCT használatával egyesíti mindkét táblázatot
SELECT column1, column2 FROM `table1`UNION DISTINCTSELECT column1,column2 FROM `table2`;
Itt eltávolítja az ismétlődő sorokat, és csak az egyedi sorokat adja vissza.
Megjegyzés: A MySQL alapértelmezés szerint a DISTINCT záradékot használja az UNION lekérdezések végrehajtásakor, ha nincs megadva semmi.
Most hozzunk létre egy UNION lekérdezést, amely mindkét táblát egyesíti az ALL használatával
SELECT `column1`,` column1` FROM `table1`UNION ALLSELECT ` column1`,` column1` FROM `table2`;
Itt ismétlődő sorok szerepelnek, és mivel az ALL-et használjuk.
Miért érdemes szakszervezeteket használni
Tegyük fel, hogy van egy hiba az adatbázis-tervezésben, és két különböző, azonos célra szolgáló táblázatot használ. Ezt a két táblázatot egybe kívánja konszolidálni, miközben az ismétlődő rekordok nem kúsznak be az új táblába. Ilyen esetekben használhatja az UNION alkalmazást.
Összegzés
- Az UNION paranccsal egynél több SELECT lekérdezési eredmény kombinálható egyetlen lekérdezésbe, amely tartalmazza az összes kiválasztott lekérdezés sorát.
- Az UNION parancs működéséhez a SELECT utasítások oszlopainak és adattípusainak meg kell egyezniük.
- A DISTINCT záradék az duplikált értékek kiküszöbölésére szolgál az UNION lekérdezés eredményhalmazából. A MySQL a DISTINCT záradékot használja alapértelmezettként az UNION lekérdezések végrehajtásakor, ha nincs megadva semmi.
- Az ALL záradék arra szolgál, hogy az UNION lekérdezésben még az összes másolat is visszatérjen.
Gyakorlati példák a MySQL munkaasztal használatával
A myFlixDB segítségével kombinálhatjuk
tagsági szám és teljes_nevek a Tagok táblázatból
val vel
film_azonosító és cím a filmek táblázatából
Használhatjuk a következő lekérdezést
SELECT `membership_number`,`full_names` FROM `members`UNIONSELECT `movie_id`,`title` FROM `movies`;
A fenti parancsfájl futtatása a MySQL munkapadban a myflixdb fájlhoz a következő eredményeket nyújtja nekünk.
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 |