Ниже приведен пример оператора MINUS, который использует ORDER BY:
Oracle PL/SQL
1
2
3
4
5
6
7
8
|
SELECT supplier_id, supplier_name
FROM suppliers
WHERE state = 'Nevada'
MINUS
SELECT company_id, company_name
FROM companies
WHERE company_id <= 400
ORDER BY 2;
|
В этом примере MINUS, так как имена столбцов в двух запросах SELECT отличаются, то в операторе ORDER BY выгоднее ссылаться на положение столбцов в результирующем наборе. В этом примере, мы отсортировали результаты по supplier_name / company_name в порядке возрастания, как это обозначено в ORDER BY 2.
Поля supplier_name / company_name находятся в позиции # 2 в результирующем наборе.
В Oracle присутствует возможность объединять выборки. Для объединения используются операторы: UNION (с вариацией UNION ALL), INTERSECT и MINUS. Рассмотрим работу всех этих операторов.
1. UNION и UNION ALL
UNION — объединяет наборы данных, но при этом исключает дублирующие записи, тоесть если у вас в первом и во втором наборе есть одинаковая запись то в результирующем наборе будет только одна такая запись.
UNION ALL — объединяет наборы данных и оставляет дублирующие записи, тоесть если в первом и во втором наборе есть одинаковые записи то в результирующем наборе будут все эти записи.
Для экспериментов, создадим две таблицы и заполним их тестовыми данными.
--Создаем первую таблицу
create table PERSONS
(
id NUMBER,
name VARCHAR2(50)
);
--Создаем вторую таблицу
create table PERSONS1
(
id NUMBER,
name VARCHAR2(50)
);
Заполняем таблицы данными
Do'stlaringiz bilan baham: |