Документация по PostgreSQL 9.4.1 | |||
---|---|---|---|
Пред. | Уровень выше | Глава 7. Запросы | След. |
7.4. Сочетание запросов
Результаты двух запросов можно обработать, используя операции над множествами: объединение, пересечение и вычитание. Эти операции записываются соответственно так:
запрос1 UNION [ALL] запрос2 запрос1 INTERSECT [ALL] запрос2 запрос1 EXCEPT [ALL] запрос2
Здесь запрос1 и запрос2 — это запросы, в которых могут использоваться все возможности, рассмотренные до этого. Операции над множествами тоже можно вкладывать и соединять, например:
запрос1 UNION запрос2 UNION запрос3
Этот сложный запрос выполняется так:
(запрос1 UNION запрос2) UNION запрос3
UNION по сути добавляет результаты второго запроса к результатам первого (хотя никакой порядок возвращаемых строк при этом не гарантируется). Более того, эта операция убирает дублирующиеся строки из результата так же, как это делает DISTINCT, если только не указано UNION ALL.
INTERSECT возвращает все строки, содержащиеся в результате и первого, и второго запроса. Дублирующиеся строки отфильтровываются, если не указано ALL.
EXCEPT возвращает все строки, которые есть в результате первого запроса, но отсутствуют в результате второго. (Иногда это называют разницей двух запросов.) И здесь дублирующиеся строки отфильтровываются, если не указано ALL.
Чтобы можно было вычислить объединение, пересечение или разницу результатов двух запросов, эти запросы должны быть "совместимыми для объединения", что означает, что они должны иметь одинаковое число колонок и соответствующие колонки должны быть совместимых типов, как описывается в Разделе 10.5.
Пред. | Начало | След. |
Списки выборки | Уровень выше | Сортировка строк |