JOIN vs UNION — в чём разница?

Эти два оператора в SQL на первый взгляд делают похожее — они «объединяют» таблицы. Но делают это по-разному и для разных целей.

Вкратце: JOIN объединяет по горизонтали (добавляются столбцы из разных таблиц), тогда как UNION объединяет по вертикали (добавляются строки из разных запросов).

JOIN — склеиваем строки по какому-то условию

JOIN берёт строки из одной таблицы и дополняет их данными из другой. Главное — задать условие, по которому строки связаны (ON ...). Можно так склеить столбцы из большого числа таблиц.

Оператор JOIN имеет много вариаций, все описаны подробно здесь.

UNION — просто склеиваем выборки

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

Например, у нас есть две таблицы «online sales» и «offline sales»:

online_sales

productrevenue
Phone1000
Laptop2000

offline_sales

productrevenue
Monitor1500
Laptop2000

Тогда объединение этих таблиц:

productrevenue
Phone1000
Laptop2000
Monitor1500

Обратите внимание, что в объединение таблиц не вошли дубликаты. Если дубликаты отсекать не нужно, то используйте UNION ALL.

productrevenue
Phone1000
Laptop2000
Monitor1500
Laptop2000

Написать комментарий

Мало букафф? Читайте есчо !

Группировка строковых значений в выборке из базы данных

Сентябрь 30, 2018 г.

Группировка по полю, содержащему число, используется значительно чаще, чем группировка по текстовому полю. Я думаю, вы использовали функции вроде AVG(), ...

Читать

А что такое SERIAL и чем он отличается от INT?

Июль 7, 2025 г.

В SQL, когда вы создаёте поле для идентификатора (id), ключа в таблице, часто используется либо INT, либо SERIAL. Они похожи, но не совсем одно и то же. INT — просто числовой тип данных. Если вы хотите, чтобы значения увеличивались автоматически ...

Читать

 

Комментарии к «JOIN vs UNION — в чём разница?»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: