Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
LEFT JOIN — сохранение всех строк левой таблицы
LEFT JOIN (левое внешнее соединение) используется для объединения двух таблиц, когда нужно сохранить все строки из левой таблицы, независимо от наличия соответствующих строк в правой таблице.
Основная суть
При LEFT JOIN результат содержит:
- Все строки из левой таблицы (FROM)
- Соответствующие данные из правой таблицы (если есть)
- NULL значения для полей правой таблицы, если совпадения не найдено
Простой пример
Есть таблицы пользователей и их заказов:
-- Таблица users
id | name
1 | Alice
2 | Bob
3 | Charlie
-- Таблица orders
id | user_id | amount
101| 1 | 100
102| 1 | 50
103| 2 | 200
Обычный INNER JOIN вернёт только пользователей с заказами:
SELECT u.id, u.name, o.amount
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
LEFT JOIN вернёт всех пользователей, даже без заказов:
SELECT u.id, u.name, o.amount
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;
Практические применения
1. Поиск неактивных пользователей (без заказов)
SELECT u.id, u.name
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE o.id IS NULL;
2. Статистика по группам с нулевыми значениями
SELECT u.id, u.name, COUNT(o.id) as order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id, u.name;
3. Множественные LEFT JOIN
SELECT
u.name,
COUNT(DISTINCT o.id) as orders,
COUNT(DISTINCT r.id) as reviews
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
LEFT JOIN reviews r ON u.id = r.user_id
GROUP BY u.id;
Разница между JOIN'ами
- INNER JOIN → только пересечение
- LEFT JOIN → все строки левой + совпадения из правой
- RIGHT JOIN → все строки правой + совпадения из левой
- FULL JOIN → все строки из обеих таблиц
Важные моменты
- NULL значения появляются в полях правой таблицы при отсутствии совпадения
- WHERE условие после LEFT JOIN отличается от условия ON
- Используй COUNT(DISTINCT) при группировке для избежания дублирования
LEFT JOIN незаменим для аналитики, отчётов и поиска отсутствующих связей в данных.