В чем разница между JOIN и UNION? - PullRequest
223 голосов
/ 25 мая 2009

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

Ответы [ 15 ]

275 голосов
/ 25 мая 2009

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)
56 голосов
/ 25 мая 2009

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

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

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

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.

43 голосов
/ 28 мая 2015

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

Для СОЮЗА:

Enter image description here

Для РЕЙТИНГА:

Enter image description here

40 голосов
/ 28 августа 2017

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

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

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

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

enter image description here

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

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

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

enter image description here

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

Источник

38 голосов
/ 08 июля 2011

JOIN:

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

UNION:

Оператор множеств 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 означает, что у вас есть таблицы или результаты с такое же количество и тип столбцов, и вы добавляете это к таблицы / наборы результатов вместе. Посмотрите на этот пример:

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
20 голосов
/ 26 марта 2010

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

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

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

9 голосов
/ 25 мая 2009

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

2 голосов
/ 24 мая 2016

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

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

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

1 голос
/ 25 мая 2009

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

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

0 голосов
/ 04 апреля 2019

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

  • СОЕДИНЯЕТСЯ за объединением таблиц
  • UNION (et all) объединяет запросы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...