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

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

Что такое CROSS JOIN

Июль 4, 2025 г.

Конструкция CROSS JOIN в SQL — это один из видов JOIN, который создаёт декартово произведение двух таблиц: каждая строка из первой таблицы соединяется со всеми строками второй. Если: Таблица A содержит m строк, Таблица B содержит n строк, ...

Читать

SQL-инъекция: как работает и как защититься

Июль 10, 2025 г.

SQL-инъекция (SQL Injection) — это распространённая и весьма опасная уязвимость веб-приложений. Она позволяет злоумышленнику вмешиваться в SQL-запросы, ...

Читать

Нормализация базы данных, разбираемся с нормальными формами на примере

Июль 14, 2025 г.

Нормализация - это поэтапный процесс, происходит по шагам. Каждый шаг — это нормальная форма (НФ), которая обычно требует, чтобы предыдущий этап нормализации был выполнен. Всего их выделяют шесть, но чаще всего достаточно первых четырёх. Я рассмотрю их ...

Читать

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

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

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

Читать
 

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

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



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