🗄️ SQL: JOIN на пальцах

Какой JOIN что возвращает, с мини-примером.

Теория · Данные · #sql #postgres

Есть две таблицы: users(id, name) и orders(id, user_id, sum).

JOIN Возвращает
INNER только пары, у которых есть совпадение
LEFT все слева + совпадения справа (иначе NULL)
RIGHT зеркально LEFT
FULL все строки обеих таблиц
CROSS декартово произведение
-- пользователи без заказов
SELECT u.name
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE o.id IS NULL;

Совет: Условие по правой таблице в WHERE превращает LEFT JOIN в INNER. Условие кладите в ON.