В этом учебном пособии вы узнаете, как использовать SQLite оператор UNION с синтаксисом и примерами.
Описание
SQLite оператор UNION используется для объединения результирующих наборов из 2 или более операторов SELECT. Он удаляет повторяющиеся строки между различными операторами SELECT.
Каждый оператор SELECT в операторе UNION должен иметь одинаковое количество полей в наборах результатов с одинаковыми типами данных.
Синтаксис
Синтаксис оператора UNION в SQLite:
FROM tables
[WHERE conditions]
UNION
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
Параметры или аргументы
expression1, expression2, ... expression_n
Столбцы или расчеты, которые вы хотите получить.
tables
Таблицы, из которых вы хотите получить записи. В операторе FROM должна быть указана хотя бы одна таблица.
WHERE conditions
Необязательный. Условия, которые должны быть выполнены для выбранных записей.
Примечание
- В обоих операторах SELECT должно быть одинаковое количество выражений.
- Поскольку оператор UNION по умолчанию удаляет все повторяющиеся строки из результирующего набора, предоставление модификатора UNION DISTINCT не влияет на результаты.
- Имена столбцов из первого оператора SELECT в операторе UNION используются в качестве имен столбцов для результирующего набора.
Пример - возврат одного поля
Ниже приведен пример SQLite оператора UNION, который возвращает одно поле из нескольких операторов SELECT (и оба поля имеют одинаковый тип данных):
1 2 3 4 5 |
SELECT department_id FROM departments UNION SELECT department_id FROM employees; |
В этом примере SQLite оператора UNION, если department_id появилось в таблице departments и employees, оно будет отображаться в результирующем наборе один раз. SQLite оператор UNION удаляет дубликаты. Если вы НЕ хотите удалять дубликаты, попробуйте использовать оператор SQLite UNION ALL.
Пример - использование ORDER BY
SQLite оператор UNION может использовать предложение ORDER BY для упорядочивания результатов запроса.
Например:
1 2 3 4 5 6 7 8 9 |
SELECT department_id, department_name FROM departments WHERE department_id in (1,2) UNION SELECT employee_id, last_name FROM employees WHERE hire_date = '2019-02-08' ORDER BY 2; |
В этом SQLite операторе UNION, поскольку имена столбцов в двух операторах SELECT различаются, более выгодно ссылаться на столбцы в предложении ORDER BY по их позиции в наборе результатов. В этом примере мы отсортировали результаты по department_name / last_name в порядке возрастания, как обозначено ORDER BY 2.
Поля department_name / last_name находятся в позиции № 2 в результирующем наборе.