Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
В чем разница между LEFT JOIN и RIGHT JOIN?
LEFT JOIN и RIGHT JOIN различаются в том, какая таблица является основной и какие строки сохраняются при отсутствии совпадений.
LEFT JOIN:
SELECT u.id, u.name, o.total
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;
Результат: ВСЕ строки из левой таблицы (users), даже если у пользователя нет заказов. Если нет заказа — поле order.total будет NULL.
RIGHT JOIN:
SELECT u.id, u.name, o.total
FROM users u
RIGHT JOIN orders o ON u.id = o.user_id;
Результат: ВСЕ строки из правой таблицы (orders), даже если заказ не привязан ни к какому пользователю. Если пользователя нет — поле users.name будет NULL.
Визуально:
users table: orders table:
id | name id | user_id | total
1 | John 1 | 1 | 100
2 | Jane 2 | 1 | 50
3 | Bob 3 | NULL | 30
LEFT JOIN результат:
user_id | name | total
1 | John | 100
1 | John | 50
2 | Jane | NULL ← Jane нет заказов
3 | Bob | NULL ← Bob нет заказов
RIGHT JOIN результат:
user_id | name | total
1 | John | 100
1 | John | 50
NULL | NULL | 30 ← Заказ без пользователя
В practice:
Я почти всегда использую LEFT JOIN, потому что часто основная таблица — это то, что мне нужно. RIGHT JOIN редко нужен, потому что можно просто переписать как LEFT JOIN с поменянными таблицами:
-- Это эквивалентно
SELECT * FROM users LEFT JOIN orders ON users.id = orders.user_id;
SELECT * FROM orders RIGHT JOIN users ON users.id = orders.user_id;
Совет: Не используй RIGHT JOIN в production. Переписывай как LEFT JOIN для clarity. Код должен быть понятен любому разработчику.
Похожие вопросы
- Для чего используется Foreign Key в БД?
- С какими работал базами данных
- Какие знаешь фреймворки Node.js?
- Работал с монолитным или микросервисным приложением
- К чему стремишься в профессиональном развитии
- В чем разница между var и let?
- Как совершенствуешь знания?
- Какие знаешь команды в Linux?
- Расшифруй аббревиатуру SOLID
- Проводил ли Code Review
- Какие ресурсы используешь для изучения новых знаний?
- С какими проектами хочешь работать
- Больше нравятся реляционные или нереляционные базы данных
- Что такое redirecting в HTTP?
- Что используешь для хранения коллекции в JavaScript?
- Что такое архитектура приложения?
- Объясните разницу между CommonJS и ES modules в Node.js.
- Как проходит Code Review на текущем месте работы?
- Почему выбрал разработку?
- Приведи пример реализованных идей оптимизации работы команды