Пример синтаксиса
SELECT order_items.id, orders.order_date, order_items.price
FROM order_items
LEFT OUTER JOIN orders
ON order_items.order_id = orders.id;
Операция JOIN объединяет строки из двух или более таблиц на основе связанного столбца между ними.
Визуализация объединений
SELECT * FROM `A` INNER JOIN `B`
┌────────┐
│ A ┌───┼────┐
│ │ ∩ │ │
└────┼───┘ B │
└────────┘
| Тип JOIN | Включённые данные | Описание |
|---|---|---|
INNER JOIN |
∩ |
Возвращает записи с совпадающими значениями в обеих таблицах |
LEFT OUTER JOIN |
A + ∩ |
Возвращает все записи из таблицы A и совпадающие из таблицы B |
RIGHT OUTER JOIN |
∩ + B |
Возвращает все записи из таблицы B и совпадающие из таблицы A |
FULL OUTER JOIN |
A + ∩ + B |
Возвращает все записи при наличии совпадения в левой или правой таблице |
Варианты объединений и фильтры
Left Join с исключением пересечения
SELECT * FROM A
LEFT JOIN B ON A.key = B.key
WHERE B.key IS NULL;
Right Join с исключением пересечения
SELECT * FROM A
RIGHT JOIN B ON A.key = B.key
WHERE A.key IS NULL;
Full Outer Join с исключением пересечения
SELECT * FROM A
FULL OUTER JOIN B ON A.key = B.key
WHERE A.key IS NULL OR B.key IS NULL;