English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQLite базовый учебник

SQLite продвинутый учебник

SQLite программный интерфейс

Подъединение UNION в SQLite

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

Оператор 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                 Финансы