Операторы SET объединяют результаты нескольких операторов SELECT. Это может выглядеть аналогично объединениям, но объединения объединяют столбцы из нескольких таблиц, тогда как операторы SET объединяют строки из нескольких строк.
правила
-
Количество столбцов в каждом операторе SELECT должно быть одинаковым.
-
Типы данных из каждого SELECT должны быть совместимы.
-
ORDER BY должен быть включен только в окончательный оператор SELECT.
Количество столбцов в каждом операторе SELECT должно быть одинаковым.
Типы данных из каждого SELECT должны быть совместимы.
ORDER BY должен быть включен только в окончательный оператор SELECT.
UNION
Оператор UNION используется для объединения результатов нескольких операторов SELECT. Это игнорирует дубликаты.
Синтаксис
Ниже приведен основной синтаксис оператора UNION.
SELECT col1, col2, col3… FROM <table 1> [WHERE condition] UNION SELECT col1, col2, col3… FROM <table 2> [WHERE condition];
пример
Рассмотрим следующую таблицу сотрудников и таблицу зарплат.
Сотрудник № | Имя | Фамилия | JoinedDate | DepartmentNo | Дата рождения |
---|---|---|---|---|---|
101 | Майк | Джеймс | 3/27/2005 | 1 | 1/5/1980 |
102 | Роберт | Williams | 4/25/2007 | 2 | 3/5/1983 |
103 | Питер | Павел | 3/21/2007 | 2 | 4/1/1983 |
104 | Alex | Стюарт | 2/1/2008 | 2 | 11/6/1984 |
105 | Роберт | Джеймс | 1/4/2008 | 3 | 12/1/1984 |
Сотрудник № | Валовой | дедукция | NetPay |
---|---|---|---|
101 | 40000 | 4000 | 36000 |
102 | 80000 | 6000 | 74000 |
103 | 90000 | 7000 | 83000 |
104 | 75000 | 5000 | 70000 |
Следующий запрос UNION объединяет значение EmployeeNo из таблицы Employee и Salary.
SELECT EmployeeNo FROM Employee UNION SELECT EmployeeNo FROM Salary;
Когда запрос выполняется, он производит следующий вывод.
EmployeeNo ----------- 101 102 103 104 105
СОЮЗ ВСЕХ
Оператор UNION ALL похож на оператор UNION, он объединяет результаты из нескольких таблиц, включая повторяющиеся строки.
Синтаксис
Ниже приведен основной синтаксис оператора UNION ALL.
SELECT col1, col2, col3… FROM <table 1> [WHERE condition] UNION ALL SELECT col1, col2, col3… FROM <table 2> [WHERE condition];
пример
Ниже приведен пример для оператора UNION ALL.
SELECT EmployeeNo FROM Employee UNION ALL SELECT EmployeeNo FROM Salary;
Когда вышеуказанный запрос выполняется, он производит следующий вывод. Вы можете видеть, что он также возвращает дубликаты.
EmployeeNo ----------- 101 104 102 105 103 101 104 102 103
ПЕРЕСЕЧЕНИЕ
Команда INTERSECT также используется для объединения результатов из нескольких операторов SELECT. Он возвращает строки из первого оператора SELECT, который имеет соответствующее совпадение во втором операторе SELECT. Другими словами, он возвращает строки, которые существуют в обоих инструкциях SELECT.
Синтаксис
Ниже приведен основной синтаксис оператора INTERSECT.
SELECT col1, col2, col3… FROM <table 1> [WHERE condition] INTERSECT SELECT col1, col2, col3… FROM <table 2> [WHERE condition];
пример
Ниже приведен пример оператора INTERSECT. Он возвращает значения EmployeeNo, которые существуют в обеих таблицах.
SELECT EmployeeNo FROM Employee INTERSECT SELECT EmployeeNo FROM Salary;
Когда вышеуказанный запрос выполняется, он возвращает следующие записи. EmployeeNo 105 исключен, поскольку он не существует в таблице SALARY.
EmployeeNo ----------- 101 104 102 103
МИНУС / КРОМЕ
Команды MINUS / EXCEPT объединяют строки из нескольких таблиц и возвращают строки, которые находятся в первом SELECT, но не во втором SELECT. Они оба возвращают одинаковые результаты.
Синтаксис
Ниже приведен основной синтаксис оператора MINUS.
SELECT col1, col2, col3… FROM <table 1> [WHERE condition] MINUS SELECT col1, col2, col3… FROM <table 2> [WHERE condition];
пример
Ниже приведен пример оператора MINUS.
SELECT EmployeeNo FROM Employee MINUS SELECT EmployeeNo FROM Salary;
Когда этот запрос выполняется, он возвращает следующую запись.