Вопрос

В чем разница между 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)

Другие советы

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

Используя ПРИСОЕДИНЯЙТЕСЬ, вы можете получать данные из двух или более таблиц на основе логических связей между таблицами.Объединения указывают, как SQL должен использовать данные из одной таблицы для выбора строк в другой таблице.

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

СОЮЗ Пример:

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

Выход:

Column1    Column2
-------------------
1          2
3          4

ПРИСОЕДИНЯЙТЕСЬ Пример:

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

Это выведет все строки из обеих таблиц, для которых выполнено условие a.Id = b.AFKId правда.

Соединения и объединения можно использовать для объединения данных из одной или нескольких таблиц.Разница заключается в том, как объединяются данные.

Проще говоря, объединения объединяют данные в новые столбцы.Если две таблицы объединены, то данные из первой таблицы отображаются в одном наборе столбцов рядом со столбцом второй таблицы в той же строке.

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

Вот визуальное изображение соединения.Столбцы таблиц A и B объединяются в один результат.

enter image description here

Каждая строка результата содержит столбцы из ОБЕИХ таблиц A и B.Строки создаются, когда столбцы одной таблицы совпадают со столбцами из другой.Это совпадение называется условием соединения.

Это делает соединения действительно удобными для поиска значений и включения их в результаты.Обычно это является результатом денормализации (обратной нормализации) и предполагает использование внешнего ключа в одной таблице для поиска значений столбца с использованием первичного ключа в другой.

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

enter image description here

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

Источник

Вы можете увидеть одни и те же схематические объяснения для обоих случаев, но они совершенно сбивают с толку.

Для СОЮЗА:

Enter image description here

Для ПРИСОЕДИНЕНИЯ:

Enter image description here

ПРИСОЕДИНИТЬСЯ:

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

СОЮЗ:

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

Например:

См. две таблицы, показанные ниже:

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

Это соединение.

UNION означает, что вы должны иметь таблицы или resultset с такое же количество и тип столбцов, и вы добавляете это к таблицы/наборы результатов вместе.Посмотрите на этот пример:

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

Это совершенно разные вещи.

А присоединиться позволяет связывать схожие данные в разных таблицах.

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

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

Соединения и объединения можно использовать для объединения данных из одной или нескольких таблиц.Разница заключается в том, как объединяются данные.

Проще говоря, соединения объединяют данные в новые столбцы.Если две таблицы объединены, то данные из первой таблицы отображаются в одном наборе столбцов рядом со столбцом второй таблицы в той же строке.

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

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

select 1 as id, 3 as value
union
select 1 as id, 3 as value

идентификатор, значение

1,3

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

идентификатор, значение, идентификатор, значение

1,3,1,3

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

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

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

внутреннее соединение:

ВЫБЕРИТЕ ИДЕНТИФИКАТОР, ИМЯ, СУММУ, ДАТУ

ОТ КЛИЕНТОВ

ВНУТРЕННИЕ ЗАКАЗЫ СОЕДИНЕНИЯ

ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

союз:

ВЫБЕРИТЕ ИДЕНТИФИКАТОР, ИМЯ, СУММУ, ДАТУ

ОТ КЛИЕНТОВ

ЛЕВОЕ ПРИСОЕДИНЯЙТЕСЬ К ЗАКАЗАМ

ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID

СОЮЗ

ВЫБЕРИТЕ ID, ИМЯ, СУММУ, ДАТУ 
 ОТ КЛИЕНТОВ


ПРАВИЛЬНОЕ ОБЪЕДИНЕНИЕ ЗАКАЗОВ

ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Использование СОЮЗА

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

Использование объединений

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

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

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

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

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

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

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

Union Operation – это совокупный результат Вертикальный Совокупность строк, Операция Союза является совокупным результатом Горизонтальный Совокупность столбцов.

Мне нравится думать об общей разнице следующим образом:

  • ОБЪЕДИНЯЕТСЯ соединять таблицы
  • UNION (и все) объединяет запросы.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top