Резюме :в този урок ще научите как да използвате SQLite UNION
оператор за комбиниране на набори от резултати от две или повече заявки в един резултатен набор.
Въведение в SQLite UNION
оператор
Понякога трябва да комбинирате данни от множество таблици в пълен набор от резултати. Може да е за таблици с подобни данни в една и съща база данни или може би трябва да комбинирате подобни данни от множество бази данни.
За да комбинирате редове от две или повече заявки в един набор от резултати, използвате SQLite UNION
оператор. Следното илюстрира основния синтаксис на UNION
оператор:
query_1
UNION [ALL]
query_2
UNION [ALL]
query_3
...;
Code language: SQL (Structured Query Language) (sql)
И двете UNION
и UNION ALL
операторите комбинират редове от набори от резултати в единичен набор от резултати. UNION
Операторът премахва елиминира дублиращи се редове, докато UNION ALL
операторът не го прави.
Тъй като UNION ALL
операторът не премахва дублиращи се редове, той работи по-бързо от UNION
оператор.
Следните са правилата за данните на съюза:
- Броят на колоните във всички заявки трябва да е еднакъв.
- Съответните колони трябва да имат съвместими типове данни.
- Имената на колоните на първата заявка определят имената на колоните на комбинирания набор от резултати.
GROUP BY
иHAVING
клаузите се прилагат към всяка отделна заявка, а не към крайния резултатен набор.ORDER BY
Клаузата се прилага към комбинирания набор от резултати, а не в рамките на отделния набор от резултати.
Имайте предвид, че разликата между UNION
и JOIN
напр. INNER JOIN
или LEFT JOIN
това е JOIN
клаузата комбинира колони от множество свързани таблици, докато UNION
комбинира редове от множество подобни таблици.
Да предположим, че имаме две таблици t1 и t2 със следните структури:
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)
Следното изявление комбинира наборите от резултати от таблицата t1 и t2, използвайки UNION
оператор:
SELECT v1
FROM t1
UNION
SELECT v2
FROM t2;
Code language: SQL (Structured Query Language) (sql)
Ето изхода:
Следната снимка илюстрира UNION
работа на таблици t1 и t2:
Следното изявление комбинира наборите от резултати от таблицата t1 и t2, използвайки UNION ALL
оператор:
SELECT v1
FROM t1
UNION ALL
SELECT v2
FROM t2;
Code language: SQL (Structured Query Language) (sql)
Следната снимка показва изхода:
Следната снимка илюстрира UNION ALL
работа на наборите от резултати на t1 и t2 таблици:
SQLite UNION
примери
Нека вземем няколко примера за използване на UNION
оператор.
1) SQLite UNION
пример
Този израз използва UNION
оператор за комбиниране на имена на служители и клиенти в един списък:
SELECT FirstName, LastName, 'Employee' AS Type
FROM employees
UNION
SELECT FirstName, LastName, 'Customer'
FROM customers;
Code language: SQL (Structured Query Language) (sql)
Ето изхода:
2) SQLite UNION
с ORDER BY
пример
Този пример използва UNION
оператор да комбинира имената на служителите и клиентите в единен списък. В допълнение, той използва ORDER BY
клауза за сортиране на списъка с имена по име и фамилия.
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)
Ето изхода:
В този урок научихте как да използвате SQLite UNION
оператор за комбиниране на редове от набори от резултати в един резултатен набор. Освен това научихте разликите между UNION
и UNION ALL
оператори.