Оператор UNION служит для объединения нескольких запросов в один. Таким образом результирующие записи помещаются в одну таблицу, где сначала будут идти результаты первого запроса, затем второго и так далее. Рассмотрим синтаксис оператора UNION:
1
|
запрос1 UNION [ALL] запрос2
|
Если используется модификатор ALL, то в результирующем наборе могут встретятся одинаковые записи, если же его не использовать все записи будут уникальными. С помощью оператора UNION можно связать любое количество запросов, но для этого должны выполняться следующие требования:
- Наборы должны иметь приводимые типы в соответствующих столбцах
1
2
3
|
SELECT ID FROM Student
UNION
SELECT ID FROM StudentGroup
|
Конечно чаще всего данная операция применяется, если нужно собрать однородную информацию из разных таблиц. Допустим, если бы у нас было дополнительное поле тип студента, то тогда каждому типу студента соответствовала своя таблица в которой были похожие и отличающиеся поля, мы смогли бы свести информацию из всех таблиц с помощью UNION.
Если UNION является объединением запросов, то для пересечения запросов или получения разности запросов необходимо использовать INTERSECT и EXCEPT. Давайте выведем всех студентов, которые учатся на бюджете:
1
2
3
|
SELECT GroupID FROM Student
INTERSECT
SELECT ID AS GroupID StudentGroup WHERE (commerce=TRUE)
|
Для получения всех студентов, которые учатся на коммерции:
1
2
3
|
SELECT GroupID FROM Student
EXCEPT
SELECT ID AS GroupID StudentGroup WHERE (commerce=TRUE)
|
|