Відповіді:
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)
UNION-JOIN
і як я можу виконати це у стандартному SQL? Maria DB має команду union join
, але інші бази даних не мають. Дякую.
Приєднання та об'єднання можуть використовуватися для об'єднання даних з однієї або декількох таблиць. Різниця полягає в тому, як поєднуються дані.
Простіше кажучи, приєднання об'єднує дані в нові стовпці . Якщо дві таблиці з'єднані разом, то дані з першої таблиці відображаються в одному наборі стовпців поряд зі стовпцем другої таблиці в тому ж рядку.
Профспілки об'єднують дані в нові рядки. Якщо дві таблиці "об'єднані" разом, то дані з першої таблиці знаходяться в одному наборі рядків, а дані з другої таблиці - в іншому. Рядки - однаковий результат.
Ось наочне зображення з'єднання. Стовпці таблиці А та В об'єднані в єдиний результат.
Кожен рядок результату містить стовпці з таблиці BOTH та B. Рядки створюються, коли стовпці з однієї таблиці відповідають стовпцям з іншої. Цей матч називається умовою приєднання.
Це робить об'єднання справді чудовими для пошуку цінностей та включення їх до результатів. Зазвичай це результат денормалізації (повернення нормалізації) і передбачає використання зовнішнього ключа в одній таблиці для пошуку значень стовпців за допомогою первинного ключа в іншій.
Тепер порівняйте наведене зображення із зображенням союзу. У об'єднанні кожен рядок у результаті є з однієї таблиці АБО з іншої. У об'єднанні стовпці не поєднуються для створення результатів, рядки об'єднуються.
Як об'єднання, так і об'єднання можуть використовуватися для об'єднання даних з однієї або декількох таблиць в єдині результати. Вони обидва йдуть по цьому різними шляхами. Якщо об'єднання використовується для об'єднання стовпців з різних таблиць, об'єднання використовується для об'єднання рядків.
UNION об'єднує результати двох або більше запитів в єдиний набір результатів, який включає всі рядки, що належать до всіх запитів у об'єднанні.
Використовуючи JOIN , ви можете отримати дані з двох або більше таблиць на основі логічних зв’язків між таблицями. Приєднання вказують, як 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
справжня.
Можливо, ви побачите однакові схематичні пояснення для обох, але вони зовсім заплутані.
Для союзу:
ПРИЄДНАЙТЕСЬ:
Об'єднання використовується для відображення стовпців з однаковими або різними іменами з різних таблиць. Виведений результат матиме всі стовпці, що відображаються окремо. Тобто стовпчики будуть вирівняні поруч один з одним.
Оператор набору 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
Вони абсолютно різні речі.
Приєднатися дозволяє зв'язати аналогічні дані в різних таблицях.
Союз повертає результати двох різних запитів як єдиний набір записів.
Приєднання та об'єднання можуть використовуватися для об'єднання даних з однієї або декількох таблиць. Різниця полягає в тому, як поєднуються дані.
Простіше кажучи, приєднання об'єднує дані в нові стовпці. Якщо дві таблиці з'єднані разом, то дані з першої таблиці відображаються в одному наборі стовпців поряд зі стовпцем другої таблиці в тому ж рядку.
Профспілки об'єднують дані в нові рядки. Якщо дві таблиці "об'єднані" разом, то дані з першої таблиці знаходяться в одному наборі рядків, а дані з другої таблиці - в іншому. Рядки - однаковий результат.
Пам'ятайте, що об'єднання об'єднає результати ( SQL Server впевнений) (функція чи помилка?)
select 1 as id, 3 as value
union
select 1 as id, 3 as value
id, значення
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
id, значення, id, значення
1,3,1,3
1. Стаття SQL Joins використовується для об'єднання записів з двох або більше таблиць у базі даних. ПРИЄДНАЙТЕ - це засіб для комбінування полів з двох таблиць за допомогою значень, загальних для кожної.
2. Оператор SQL UNION поєднує результат двох або більше операторів SELECT. Кожен оператор SELECT в рамках UNION повинен мати однакову кількість стовпців. Стовпці також повинні мати подібні типи даних. Також стовпці кожного оператора SELECT повинні бути в одному порядку.
наприклад: таблиця 1 клієнтів / таблиця 2 замовлення
внутрішнє з'єднання:
ВИБІР ІДЕНТИФІКАЦІЙ, ІМ'Я, СУМА, ДАТА
ВІД КЛІЄНТІВ
ВНУТРІШНЯ ПРИЄДНАЙТЕ ЗАМОВЛЕННЯ
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
союз:
ВИБІР ІДЕНТИФІКАЦІЙ, ІМ'Я, СУМА, ДАТА
ВІД КЛІЄНТІВ
ЛІВО ПРИЄДНАЙТЕ ЗАМОВЛЕННЯ
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
СОЮЗ
Виберіть ідентифікатор, ім’я, суму, дату від клієнтів
ПРАВО ПРИЄДНАЙТЕ ЗАМОВЛЕННЯ
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Ussing UNION
UNION об'єднує результати двох або більше запитів в єдиний набір результатів, який включає всі рядки, що належать до всіх запитів у об'єднанні.
Приклад об'єднання: ВИБІР 121 АС [Стовпчик1], 221 АС [Стовпчик2] СОЮЗ ВИБІР 321 AS [Стовпчик1], 422 AS [Стовпець2]
Вихід: Колонка1 Стовпчик2 ------------------- 121 221 321 422
Ussing ПРИЄДНАЄТЬСЯ
ПРИЄДНАЙТЕСЬ, ви можете отримати дані з двох або більше таблиць на основі логічних зв’язків між таблицями.
ПРИЄДНАЙТЕСЬ Приклад: ВИБІРТЕ a.Column1, b.Column2 ВІД TblA a ВНУТРІШНЕ ПРИЄДНАННЯ TblB b ON a.Id = b.id
У рефераті вони подібні тим, що поєднуються дві таблиці або набори результатів, але UNION дійсно для комбінування наборів результатів з ІНШИМОЮ НОМЕРИ КОЛОНІВ з КОЛІНЯМИ, ЩО ВИДАЮТЬ ПОДІЛЬНІ ВИДИ ДАНИХ. СТРУКТУРА така ж, додаються лише нові рядки.
При об'єднанні ви можете комбінувати таблиці / набори результатів з будь-якою можливою структурою, включаючи декартову приєднання, де немає Спільних / подібних стовпців.
Мені подобається думати про загальну різницю як таке: