Podsumowanie :w tym samouczku dowiesz się, jak używać SQLite UNION operator do łączenia zestawów wyników dwóch lub więcej zapytań w jeden zestaw wyników.
Wprowadzenie do SQLite UNION operator
Czasami trzeba połączyć dane z wielu tabel w kompletny zestaw wyników. Może to dotyczyć tabel z podobnymi danymi w tej samej bazie danych lub może trzeba połączyć podobne dane z wielu baz danych.
Aby połączyć wiersze z dwóch lub więcej zapytań w jeden zestaw wyników, użyj SQLite UNION operator. Poniżej przedstawiono podstawową składnię UNION operator:
query_1
UNION [ALL]
query_2
UNION [ALL]
query_3
...;Code language: SQL (Structured Query Language) (sql)
Oba UNION i UNION ALL operatory łączą wiersze z zestawów wyników w jeden zestaw wyników. UNION operator usuwa zduplikowane wiersze, podczas gdy UNION ALL operator nie.
Ponieważ UNION ALL operator nie usuwa zduplikowanych wierszy, działa szybciej niż UNION operatora.
Poniżej znajdują się reguły dotyczące danych związkowych:
- Liczba kolumn we wszystkich zapytaniach musi być taka sama.
- Odpowiednie kolumny muszą mieć zgodne typy danych.
- Nazwy kolumn pierwszego zapytania określają nazwy kolumn połączonego zestawu wyników.
GROUP BYiHAVINGklauzule są stosowane do każdego indywidualnego zapytania, a nie do końcowego zestawu wyników.ORDER BYklauzula jest stosowana do połączonego zestawu wyników, a nie do indywidualnego zestawu wyników.
Zauważ, że różnica między UNION i JOIN np. INNER JOIN lub LEFT JOIN jest to, że JOIN klauzula łączy kolumny z wielu powiązanych tabel, podczas gdy UNION łączy wiersze z wielu podobnych tabel.
Załóżmy, że mamy dwie tabele t1 i t2 o następujących strukturach:
CREATE TABLE t1(
v1 INT
);
INSERT INTO t1(v1)
VALUES(1),(2),(3);
CREATE TABLE t2(
v2 INT
);
INSERT INTO t2(v2)
VALUES(2),(3),(4);Code language: SQL (Structured Query Language) (sql)
Poniższa instrukcja łączy zestawy wyników tabeli t1 i t2 za pomocą UNION operator:
SELECT v1
FROM t1
UNION
SELECT v2
FROM t2;Code language: SQL (Structured Query Language) (sql) Oto wynik:
Poniższy rysunek ilustruje UNION obsługa tablic t1 i t2:
Poniższa instrukcja łączy zestawy wyników tabeli t1 i t2 przy użyciu UNION ALL operator:
SELECT v1
FROM t1
UNION ALL
SELECT v2
FROM t2;Code language: SQL (Structured Query Language) (sql) Poniższy rysunek przedstawia dane wyjściowe:
Poniższy rysunek ilustruje UNION ALL działanie zbiorów wyników tabel t1 i t2:
SQLite UNION przykłady
Weźmy kilka przykładów użycia UNION operatora.
1) SQLite UNION przykład
Ta instrukcja używa UNION operator do łączenia nazw pracowników i klientów w jedną listę:
SELECT FirstName, LastName, 'Employee' AS Type
FROM employees
UNION
SELECT FirstName, LastName, 'Customer'
FROM customers;
Code language: SQL (Structured Query Language) (sql) Oto wynik:
2) SQLite UNION z ORDER BY przykład
W tym przykładzie użyto UNION operatora do łączenia nazw pracowników i klientów w jedną listę. Ponadto używa ORDER BY klauzula sortująca listę nazwisk według imienia i nazwiska.
SELECT FirstName, LastName, 'Employee' AS Type
FROM employees
UNION
SELECT FirstName, LastName, 'Customer'
FROM customers
ORDER BY FirstName, LastName;Code language: SQL (Structured Query Language) (sql) Oto wynik:
W tym samouczku nauczyłeś się korzystać z SQLite UNION operator do łączenia wierszy z zestawów wyników w jeden zestaw wyników. Poznałeś też różnice między UNION i UNION ALL operatorów.