UNION
в SQL используется для объединения двух или более запросов оператора SELECT
.
Таблица movies
id | title | release_year | genre | rating |
---|---|---|---|---|
1 | The Shawshank Redemption | 1994 | Drama | 9 |
2 | The Godfather | 1972 | Crime | 9 |
3 | The Godfather: Part II | 1974 | Crime | 9 |
4 | The Dark Knight | 2008 | Action | 9 |
5 | 12 Angry Men | 1957 | Drama | 8 |
6 | Schindlers List | 1993 | Biography | 8 |
7 | Pulp Fiction | 1994 | Crime | 8 |
8 | The Lord of the Rings: The Return of the King | 2003 | Adventure | 8 |
9 | Fight Club | 1999 | Drama | 8 |
10 | The Good, the Bad and the Ugly | 1966 | Western | 8 |
Оператор SQL UNION
имеет следующий синтаксис:
SELECT column1,
column2,
...
FROM table_name_1
UNION
SELECT column1,
column2,
...
FROM table_name_2
Важно отметить, что каждый из операторов SELECT
должен иметь в своем запросе одинаковое количество столбцов и типы возвращаемых данных, иначе произойдет ошибка при формировании результирующей таблицы.
Например, если вы хотите получить список всех фильмов и их жанров из таблицы movies
, вы можете использовать следующий запрос:
SELECT title,
genre
FROM movies
UNION
SELECT title,
genre
FROM movies;
Этот запрос вернет список всех фильмов и их жанров, исключая дубликаты.
Еще один пример, если вы хотите соединить две таблицы с разными названиями и получить список всех фильмов и их жанров из обеих таблиц, вы можете использовать следующий запрос:
SELECT title,
genre
FROM movies
UNION
SELECT title,
genre
FROM top_rated_movies;
Этот запрос объединит результаты из двух таблиц и вернет список всех фильмов и их жанров из обеих таблиц без дубликатов.
Еще одна важная особенность UNION
он делает автоматический DISTINCT
(уникальные записи), то есть он не возвращает дублирующиеся записи. Если вы хотите включить дубликаты в результат, используйте UNION ALL
.