English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
SQLite UNIONподзадача/оператор используется для объединения результатов двух или более SELECT-запросов, не возвращая повторяющиеся строки.
Для использования UNION каждый SELECT должен иметь одинаковое количество столбцов, одинаковое количество выражений столбцов, одинаковые типы данных и одинаковый порядок, но их длина не должна быть одинаковой.
Ниже приведеноUNIONбазовая грамматика.
SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] UNION SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
Здесь, условие может быть любым выражением по вашему запросу.
Рассмотрим следующие две таблицы, (a) таблица COMPANY такова:
sqlite> select * from COMPANY; ID NAME AGE ADDRESS SALARY ---------- -------------------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
(b) другая таблица - отдел (DEPARTMENT)--
ID DEPT EMP_ID ---------- -------------------- ---------- 1 IT Billing 1 2 Инженерия 2 3 Финансы 7 4 Инженерия 3 5 Финансы 4 6 Инженерия 5 7 Финансы 6
Теперь, давайте соединим эти два таблицы с помощью SELECT-запроса и предложения UNION, как показано ниже:
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID UNION SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID;
Это会产生以下结果。
EMP_ID NAME DEPT ---------- -------------------- ---------- 1 Paul IT Финансирование 2 Allen Инженерия 3 Teddy Инженерия 4 Mark Финансы 5 David Инженерия 6 Kim Финансы 7 James Финансы
Оператор UNION ALL используется для объединения результатов двух SELECT-запросов, включая повторяющиеся строки.
То же правило относится и к оператору UNION ALL.
以下是UNION的基本语法UNION ALL。
SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] UNION ALL SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
Здесь, условие может быть любым выражением по вашему запросу.
现在,让我们在SELECT语句中将上述两个表连接如下:
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID UNION ALL SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID;
Это会产生以下结果。
EMP_ID NAME DEPT ---------- -------------------- ---------- 1 Paul IT Финансирование 2 Allen Инженерия 3 Teddy Инженерия 4 Mark Финансы 5 David Инженерия 6 Kim Финансы 7 James Финансы 1 Paul IT Финансирование 2 Allen Инженерия 3 Teddy Инженерия 4 Mark Финансы 5 David Инженерия 6 Kim Финансы 7 James Финансы