Чем join отличается от union
Перейти к содержимому

Чем join отличается от union

  • автор:

Операторы работы с наборами — UNION (Transact-SQL)

Сцепляет результаты двух запросов в один результирующий набор. Вы указываете, будет ли результирующий набор включать повторяющиеся строки:

  • UNION ALL — повторяющиеся строки включаются.
  • UNION — повторяющиеся строки исключаются.

Операция UNION отличается от операции JOIN:

  • В результате операции UNION сцепляются результирующие наборы двух запросов. При этом операция UNION не создает отдельные строки для столбцов, полученных из двух таблиц.
  • Операция JOIN сравнивает столбцы из двух таблиц и создает результирующие строки, которые состоят из столбцов из двух таблиц.

Ниже приведены основные правила объединения результирующих наборов двух запросов с помощью операции UNION:

  • количество и порядок столбцов должны быть одинаковыми во всех запросах;
  • типы данных должны быть совместимыми.

Синтаксис

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

| ( ) Спецификация запроса или выражение запроса, возвращающее данные для объединения с данными из другой спецификации запроса или выражения запроса. Определения столбцов, которые являются частью операции UNION, не должны совпадать, однако должны быть совместимыми посредством неявного преобразования. Если типы данных различаются, то получившийся тип данных определяется на основе правил очередности типов данных. Если типы одинаковы, но различаются по точности, масштабу или длине, результат определяется на основе тех же самых правил, которые действуют при объединении выражений. Дополнительные сведения см. в разделе Точность, масштаб и длина (Transact-SQL).

Столбцы типа данных xml должны быть эквивалентны друг другу. Все столбцы должны либо иметь тип, определенный в XML-схеме, либо быть нетипизированными. Типизированные столбцы должны относиться к одной и той же коллекции XML-схем.

UNION
Указывает на то, что несколько результирующих наборов следует объединить и возвратить в виде единого результирующего набора.

ВСЕ
Объединяет в результирующий набор все строки, в том числе повторяющиеся. Если обратное не указано, дубликаты строк удаляются.

Примеры

А. Использование простого UNION

При выполнении следующего примера в результирующий набор включается содержимое столбцов ProductModelID и Name таблиц ProductModel и Gloves .

-- Uses AdventureWorks IF OBJECT_ID ('dbo.Gloves', 'U') IS NOT NULL DROP TABLE dbo.Gloves; GO -- Create Gloves table. SELECT ProductModelID, Name INTO dbo.Gloves FROM Production.ProductModel WHERE ProductModelID IN (3, 4); GO -- Here is the simple union. -- Uses AdventureWorks SELECT ProductModelID, Name FROM Production.ProductModel WHERE ProductModelID NOT IN (3, 4) UNION SELECT ProductModelID, Name FROM dbo.Gloves ORDER BY Name; GO 

B. Использование SELECT INTO с UNION

При выполнении следующего примера предложение INTO во второй инструкции SELECT указывает, что в таблице с именем ProductResults содержится итоговый результирующий набор объединения выбранных столбцов таблиц ProductModel и Gloves . Таблица Gloves была создана в результате выполнения первой инструкции SELECT .

-- Uses AdventureWorks IF OBJECT_ID ('dbo.ProductResults', 'U') IS NOT NULL DROP TABLE dbo.ProductResults; GO IF OBJECT_ID ('dbo.Gloves', 'U') IS NOT NULL DROP TABLE dbo.Gloves; GO -- Create Gloves table. SELECT ProductModelID, Name INTO dbo.Gloves FROM Production.ProductModel WHERE ProductModelID IN (3, 4); GO -- Uses AdventureWorks SELECT ProductModelID, Name INTO dbo.ProductResults FROM Production.ProductModel WHERE ProductModelID NOT IN (3, 4) UNION SELECT ProductModelID, Name FROM dbo.Gloves; GO SELECT ProductModelID, Name FROM dbo.ProductResults; 

C. Использование UNION двух инструкций SELECT с ORDER BY

При использовании предложения UNION необходимо соблюдать порядок следования определенных параметров. В следующем примере показаны случаи правильного и неверного использования UNION в двух инструкциях SELECT , в которых необходимо переименовать столбцы на выходе.

-- Uses AdventureWorks IF OBJECT_ID ('dbo.Gloves', 'U') IS NOT NULL DROP TABLE dbo.Gloves; GO -- Create Gloves table. SELECT ProductModelID, Name INTO dbo.Gloves FROM Production.ProductModel WHERE ProductModelID IN (3, 4); GO /* INCORRECT */ -- Uses AdventureWorks SELECT ProductModelID, Name FROM Production.ProductModel WHERE ProductModelID NOT IN (3, 4) ORDER BY Name UNION SELECT ProductModelID, Name FROM dbo.Gloves; GO /* CORRECT */ -- Uses AdventureWorks SELECT ProductModelID, Name FROM Production.ProductModel WHERE ProductModelID NOT IN (3, 4) UNION SELECT ProductModelID, Name FROM dbo.Gloves ORDER BY Name; GO 

D. Использование UNION трех инструкций SELECT для демонстрации эффекта от использования скобок и ALL

В следующих примерах предложение UNION используется для комбинирования результатов из трех таблиц, содержащих по 5 одинаковых строк данных. В первом примере используется предложение UNION ALL , в результате чего выдаются все 15 строк. Во втором примере предложение UNION используется без ключевого слова ALL , что позволяет удалить повторяющиеся строки из комбинированного результата выполнения трех инструкций SELECT и вывести только 5 строк.

В третьем примере с первым предложением ALL используется ключевое слово UNION , а во втором предложении UNION вместо ключевого слова ALL используются скобки. Сначала выполняется второе предложение UNION , которое заключено в скобки. В результате возвращаются 5 строк, так как параметр ALL не используется и все повторяющиеся строки удаляются. Полученные 5 строк совмещаются с результатами выполнения первой инструкции SELECT с помощью ключевого слова UNION ALL . В данном случае повторяющиеся строки двух множеств, состоящих из пяти строк, не удаляются. Окончательный результат состоит из 10 строк.

-- Uses AdventureWorks IF OBJECT_ID ('dbo.EmployeeOne', 'U') IS NOT NULL DROP TABLE dbo.EmployeeOne; GO IF OBJECT_ID ('dbo.EmployeeTwo', 'U') IS NOT NULL DROP TABLE dbo.EmployeeTwo; GO IF OBJECT_ID ('dbo.EmployeeThree', 'U') IS NOT NULL DROP TABLE dbo.EmployeeThree; GO SELECT pp.LastName, pp.FirstName, e.JobTitle INTO dbo.EmployeeOne FROM Person.Person AS pp JOIN HumanResources.Employee AS e ON e.BusinessEntityID = pp.BusinessEntityID WHERE LastName = 'Johnson'; GO SELECT pp.LastName, pp.FirstName, e.JobTitle INTO dbo.EmployeeTwo FROM Person.Person AS pp JOIN HumanResources.Employee AS e ON e.BusinessEntityID = pp.BusinessEntityID WHERE LastName = 'Johnson'; GO SELECT pp.LastName, pp.FirstName, e.JobTitle INTO dbo.EmployeeThree FROM Person.Person AS pp JOIN HumanResources.Employee AS e ON e.BusinessEntityID = pp.BusinessEntityID WHERE LastName = 'Johnson'; GO -- Union ALL SELECT LastName, FirstName, JobTitle FROM dbo.EmployeeOne UNION ALL SELECT LastName, FirstName ,JobTitle FROM dbo.EmployeeTwo UNION ALL SELECT LastName, FirstName,JobTitle FROM dbo.EmployeeThree; GO SELECT LastName, FirstName,JobTitle FROM dbo.EmployeeOne UNION SELECT LastName, FirstName, JobTitle FROM dbo.EmployeeTwo UNION SELECT LastName, FirstName, JobTitle FROM dbo.EmployeeThree; GO SELECT LastName, FirstName,JobTitle FROM dbo.EmployeeOne UNION ALL ( SELECT LastName, FirstName, JobTitle FROM dbo.EmployeeTwo UNION SELECT LastName, FirstName, JobTitle FROM dbo.EmployeeThree ); GO 

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

Д. Использование простого UNION

При выполнении приведенного ниже примера в результирующий набор включается содержимое столбцов CustomerKey таблиц FactInternetSales и DimCustomer . Так как ключевое слово ALL не используется, повторяющиеся значения не включаются в результаты.

-- Uses AdventureWorks SELECT CustomerKey FROM FactInternetSales UNION SELECT CustomerKey FROM DimCustomer ORDER BY CustomerKey; 

F. Использование UNION двух инструкций SELECT с ORDER BY

Если какая-либо инструкция SELECT в инструкции UNION содержит предложение ORDER BY, это предложение должно находиться после всех инструкций SELECT. В приведенном ниже примере показаны случаи правильного и неправильного использования UNION в двух инструкциях SELECT , в которых столбец сортируется с помощью предложения ORDER BY.

-- Uses AdventureWorks -- INCORRECT SELECT CustomerKey FROM FactInternetSales ORDER BY CustomerKey UNION SELECT CustomerKey FROM DimCustomer ORDER BY CustomerKey; -- CORRECT USE AdventureWorksPDW2012; SELECT CustomerKey FROM FactInternetSales UNION SELECT CustomerKey FROM DimCustomer ORDER BY CustomerKey; 

G. Использование UNION двух инструкций SELECT с WHERE и ORDER BY

В приведенном ниже примере показаны случаи правильного и неправильного использования UNION в двух инструкциях SELECT , в которых требуются предложения WHERE и ORDER BY.

-- Uses AdventureWorks -- INCORRECT SELECT CustomerKey FROM FactInternetSales WHERE CustomerKey >= 11000 ORDER BY CustomerKey UNION SELECT CustomerKey FROM DimCustomer ORDER BY CustomerKey; -- CORRECT USE AdventureWorksPDW2012; SELECT CustomerKey FROM FactInternetSales WHERE CustomerKey >= 11000 UNION SELECT CustomerKey FROM DimCustomer ORDER BY CustomerKey; 

H. Использование UNION трех инструкций SELECT для демонстрации эффекта от использования скобок и ALL

В приведенных ниже примерах UNION используется для объединения результатов из той же самой таблицы с целью продемонстрировать эффект от применения ALL и скобок с UNION .

В первом примере UNION ALL используется для вывода повторяющихся записей. Каждая строка из исходной таблицы возвращается три раза. Во втором примере UNION используется без ключевого слова ALL , что позволяет удалить повторяющиеся строки из объединенных результатов выполнения трех инструкций SELECT и вывести только неповторяющиеся строки из исходной таблицы.

В третьем примере с первым оператором UNION используется ключевое слово ALL , а во втором предложении UNION вместо ключевого слова ALL используются скобки. Второе предложение UNION обрабатывается первым, так как оно заключено в скобки. Оно возвращает только неповторяющиеся строки из таблицы, так как параметр ALL не используется и повторяющиеся строки исключаются. Полученные строки объединяются с результатами выполнения первой инструкции SELECT с помощью ключевого слова UNION ALL . В данном случае повторяющиеся строки двух множеств не удаляются.

-- Uses AdventureWorks SELECT CustomerKey, FirstName, LastName FROM DimCustomer UNION ALL SELECT CustomerKey, FirstName, LastName FROM DimCustomer UNION ALL SELECT CustomerKey, FirstName, LastName FROM DimCustomer; SELECT CustomerKey, FirstName, LastName FROM DimCustomer UNION SELECT CustomerKey, FirstName, LastName FROM DimCustomer UNION SELECT CustomerKey, FirstName, LastName FROM DimCustomer; SELECT CustomerKey, FirstName, LastName FROM DimCustomer UNION ALL ( SELECT CustomerKey, FirstName, LastName FROM DimCustomer UNION SELECT CustomerKey, FirstName, LastName FROM DimCustomer ); 

В чем разница между JOIN и UNION?

UNION ставит строки из запросов друг за другом, в то время как JOIN создает картезийский продукт и подставляет его — совершенно другие операции. Тривиальный пример UNION :

mysql> SELECT 23 AS bah -> UNION -> SELECT 45 AS bah; +-----+ | bah | +-----+ | 23 | | 45 | +-----+ 2 rows in set (0.00 sec) 

аналогичный тривиальный пример JOIN :

mysql> SELECT * FROM -> (SELECT 23 AS bah) AS foo -> JOIN -> (SELECT 45 AS bah) AS bar -> ON (33=33); +-----+-----+ | foo | bar | +-----+-----+ | 23 | 45 | +-----+-----+ 1 row in set (0.01 sec) 

Поделиться 25 мая 2009 в 04:57

UNION объединяет результаты двух или более запросов в один набор результатов, который включает все строки, принадлежащие всем запросам в объединении. Используя JOINs, вы можете получить данные из двух или более таблиц на основе логических отношений между таблицами. JoINs указывают, как SQL должен использовать данные из одной таблицы для выбора строк в другой таблице. Операция UNION отличается от использования JOINs, которые объединяют столбцы из двух таблиц. Пример UNION:

SELECT 1 AS [Column1], 2 AS [Column2] UNION SELECT 3 AS [Column1], 4 AS [Column2] 
Column1 Column2 ------------------- 1 2 3 4 

Пример JOIN:

SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId 

Это выведет все строки из обеих таблиц, для которых условие a.Id = b.AFKId является верным.
Поделиться 25 мая 2009 в 05:01

Возможно, вы увидите одинаковые схематические объяснения для обоих, но они совершенно запутанны. Для UNION: Enter image description here Для JOIN: Enter image description here

Поделиться 28 мая 2015 в 09:50

СОВМЕСТЬ:

Связь используется для отображения столбцов с одинаковыми или разными именами из разных таблиц. Отображаемый результат будет содержать все столбцы, отображаемые по отдельности. То есть столбцы будут выровнены рядом друг с другом.

ЮНИОН:

Оператор набора данных ЮНИОН используется для объединения данных из двух таблиц, которые имеют столбцы с одинаковым типом данных. Когда выполняется ЮНИОН, данные из обеих таблиц будут собраны в один столбец с одинаковым типом данных. Например: См. две таблицы, показанные ниже:

Table t1 Articleno article price manufacturer_id 1 hammer 3 $ 1 2 screwdriver 5 $ 2 Table t2 manufacturer_id manufacturer 1 ABC Gmbh 2 DEF Co KG 

Теперь для выполнения типа JOIN запрос показан ниже.

SELECT articleno, article, manufacturer FROM t1 JOIN t2 ON (t1.manufacturer_id = t2.manufacturer_id); articelno article manufacturer 1 hammer ABC GmbH 2 screwdriver DEF Co KG 

Это объединение. ЮНИОН означает, что вам нужно создать таблицы или набор результатов с одинаковым количеством и типом столбцов и вы добавите это в таблицы/наборы результатов вместе. Смотрите на этот пример:

Table year2006 Articleno article price manufacturer_id 1 hammer 3 $ 1 2 screwdriver 5 $ 2 Table year2007 Articleno article price manufacturer_id 1 hammer 6 $ 3 2 screwdriver 7 $ 4 SELECT articleno, article, price, manufactruer_id FROM year2006 UNION SELECT articleno, article, price, manufacturer_id FROM year2007 articleno article price manufacturer_id 1 hammer 3 $ 1 2 screwdriver 5 $ 2 1 hammer 6 $ 3 2 screwdriver 7 $ 4 

Поделиться 08 июля 2011 в 12:04

Они совершенно разные вещи. Джоин позволяет сопоставлять похожие данные в разных таблицах. Объединение возвращает результаты двух разных запросов в виде одного набора записей.

Поделиться 26 марта 2010 в 09:34

Объединения и союзы могут использоваться для объединения данных из одной или нескольких таблиц. Разница заключается в том, как данные объединяются. В простых выражениях, объединения объединяют данные в новые столбцы. Если две таблицы объединяются вместе, то данные из первой таблицы отображаются в одном наборе столбцов рядом со столбцом второй таблицы в одной строке. Объединения объединяют данные в новые строки. Если две таблицы «объединены», то данные из первой таблицы находятся в одном наборе строк, а данные из второй таблицы в другом наборе. Строки находятся в одном и том же результате.

Поделиться 24 мая 2016 в 10:00

Объединение делает два запроса похожими на один. Объединения предназначены для изучения двух или более таблиц в одном операторе запроса

Поделиться 25 мая 2009 в 05:00

  1. Предложение SQL JOIN используется для объединения записей из двух или более таблиц в базе данных. JOIN — это средство объединения полей из двух таблиц, используя общие значения для каждой из них.
  2. Оператор SQL UNION объединяет результат двух или более операторов SELECT. Каждый оператор SELECT внутри UNION должен иметь одинаковое количество столбцов. Столбцы также должны иметь похожие типы данных. Кроме того, столбцы в каждом операторе SELECT должны быть в одном и том же порядке.

Например: таблица 1 клиенты / таблица 2 заказы

SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS INNER JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID; 
SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS LEFT JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID UNION SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS RIGHT JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID; 

Поделиться 23 февраля 2016 в 10:25

Помните, что объединение объединит результаты (SQL Server, чтобы быть уверенным) (особенность или ошибка?)

select 1 as id, 3 as value union select 1 as id, 3 as value 
select * from (select 1 as id, 3 as value) t1 inner join (select 1 as id, 3 as value) t2 on t1.id = t2.id 

Поделиться 25 мая 2009 в 05:07

Операция объединения — это комбинированный результат вертикального агрегата строк, а операция объединения — комбинированный результат горизонтального агрегата столбцов.

Поделиться 29 сентября 2018 в 05:22

Оператор UNION предназначен только для объединения двух или более операторов SELECT.

В то время как JOIN предназначен для выбора строк из каждой таблицы, либо внутренним, внешним, левым или правым методом.

См. здесь и здесь. Есть лучшее объяснение с примерами.

Поделиться 27 июля 2015 в 09:51

UNION объединяет результаты двух или более запросов в один набор результатов, который включает все строки, которые относятся ко всем запросам в объединении.

UNION Example: SELECT 121 AS [Column1], 221 AS [Column2] UNION SELECT 321 AS [Column1], 422 AS [Column2]
Output: Column1 Column2 ------------------- 121 221 321 422

JOINs, вы можете получить данные из двух или более таблиц на основе логических отношений между таблицами.

JOIN Example: SELECT a.Column1, b.Column2 FROM TblA a INNER JOIN TblB b ON a.Id = b.id

Поделиться 29 мая 2018 в 06:28

В абстрактном случае они похожи, потому что две таблицы или наборы результатов объединяются, но UNION на самом деле предназначен для объединения наборов результатов с ОДИННОМ ЧИСЛОМ СТОЛБЦАХ с ОДИННЫМИ ТИПИЯМ ДАННЫХ. Структура одинакова, добавляются только новые строки.

В объединениях вы можете объединять таблицы/наборы результатов с любой возможной структурой, включая картезийское объединение, где нет общих/похожих столбцов.

Поделиться 08 июня 2016 в 22:41

Мне нравится думать о общем отличии, как о:

  • JOINS объединяют таблицы
  • UNION (и все) объединяет запросы.

Разница между JOIN и UNION в SQL

JOIN и UNION — это предложения в SQL, используемые для объединения данных двух или более отношений. Но способ, которым они объединяют данные и формат полученного результата, отличается. Предложение JOIN объединяет атрибуты двух отношений для формирования результирующих кортежей, тогда как предложение UNION объединяет результат двух запросов. Давайте обсудим разницу между JOIN и UNION с помощью сравнительной таблицы, показанной ниже.

Сравнительная таблица

Основа для сравнения ПРИСОЕДИНИТЬСЯ UNION
основной JOIN объединяет атрибуты кортежей, присутствующих в двух разных отношениях, которые имеют общие поля или атрибуты. UNION объединяет кортежи отношений, которые присутствуют в запросе.
Состояние JOIN применяется, когда два вовлеченных отношения имеют хотя бы один общий атрибут. UNION применяется, когда число столбцов, присутствующих в запросе, одинаково и соответствующие атрибуты имеют одинаковый домен.
Типы ВНУТРЕННЯЯ, ПОЛНАЯ (НАРУЖНАЯ), ЛЕВАЯ РЕГИСТРАЦИЯ, ПРАВАЯ СОЕДИНЕНИЕ СОЮЗ и СОЮЗ ВСЕХ.
эффект Длина результирующих кортежей больше по сравнению с длиной кортежей вовлеченных отношений. Количество результирующих кортежей больше по сравнению с количеством кортежей, присутствующих в каждом отношении, участвующем в запросе.
схема

Определение JOIN

Предложение JOIN в SQL объединяет кортежи из двух отношений или таблиц, что приводит к увеличению размера кортежа. Результирующий кортеж содержит атрибуты из обоих отношений. Атрибуты объединяются на основе общих атрибутов между ними. Различные типы JOIN в SQL: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN.

INNER JOIN объединяет кортежи из обеих таблиц, если между ними существует общий атрибут. LEFT JOIN приводит ко всем кортежам левой таблицы и соответствующим кортежу из правой таблицы. RIGHT JOIN приводит ко всем кортежам из правой таблицы и соответствует только кортежу из левой таблицы. FULL OUTER JOIN приводит ко всем кортежам из обеих таблиц, хотя они имеют совпадающие атрибуты или нет.

ВНУТРЕННЕЕ СОЕДИНЕНИЕ — то же самое, что СОЕДИНЕНИЕ. Вы также можете удалить ключевое слово INNER и просто использовать JOIN для выполнения INNER JOIN.

Определение СОЮЗА

UNION — это операция над множествами в SQL. UNON объединяет результат двух запросов. Результат UNION включает в себя кортежи обоих отношений, присутствующих в запросе. Условия, которые должны быть выполнены для объединения двух отношений:

  1. Два отношения должны иметь одинаковое количество атрибутов.
  2. Домены соответствующего атрибута должны быть одинаковыми.

Существует два типа UNION: UNION и UNION ALL . Результат, полученный с помощью UNION, не содержит дубликатов. С другой стороны, результат, полученный с помощью UNION ALL, сохраняет дубликат.

Ключевые различия между JOIN и UNION в SQL

  1. Основное различие между JOIN и UNION состоит в том, что JOIN объединяет кортежи из двух отношений, а результирующие кортежи включают атрибуты из обоих отношений. С другой стороны, UNION объединяет результат двух запросов SELECT.
  2. Предложение JOIN применимо только тогда, когда два участвующих отношения имеют хотя бы один общий атрибут в обоих. С другой стороны, UNION применяется, когда два отношения имеют одинаковое количество атрибутов и домены соответствующих атрибутов одинаковы.
  3. Существует четыре типа РЕАГИРОВАНИЯ ВНУТРЕННЕГО РЕШЕНИЯ, ЛЕВОГО СОЕДИНЕНИЯ, ПРЯМОГО СОЕДИНЕНИЯ, ПОЛНОГО НАРУЖНОГО СОЕДИНЕНИЯ. Но есть два типа UNION, UNION и UNION ALL.
  4. В JOIN результирующий кортеж имеет больший размер, поскольку включает атрибуты обоих отношений. С другой стороны, в UNION число кортежей увеличивается, в результате чего в них входит кортеж из обоих отношений, присутствующих в запросе.

Заключение:

Обе операции объединения данных используются в разных ситуациях. JOIN используется, когда мы хотим объединить атрибуты двух отношений, имеющих хотя бы один общий атрибут. UNION используется, когда мы хотим объединить кортежи двух отношений, которые присутствуют в запросе.

Явные операции соединения стр. 3

Этот тип соединения был введен в стандарте SQL-92 , но в более поздних версиях стандарта отсутствует. В частности, его уже нет в стандарте SQL2003 (ANSI и ISO). Как и многие другие конструкции языка SQL, соединение UNION JOIN является избыточным, поскольку его можно выразить через разность полного и внутреннего соединений. Формально это можно записать следующим образом:

Ну, а если полное соединение не поддерживается (MySQL), то его можно получить объединением левого и правого внешних соединений. Тогда наша формула примет вид

Давайте в качестве примера, где мог бы пригодиться этот тип соединения, рассмотрим следующую задачу.

Найти производителей, которые выпускают принтеры, но не ПК, или выпускают ПК, но не принтеры.

Будь у нас возможность использовать UNION JOIN, мы бы решили задачу так:

Воспользуемся формулой. Полное соединение производителей ПК и производителей принтеров даст нам как тех, кто производит что-то одно, так и тех, кто производит и то, и другое.

Консоль

Выполнить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *