INNER JOIN
Возвращает только строки, у которых есть совпадение в обеих таблицах.
SELECT ... FROM t1 INNER JOIN t2 ON t1.id = t2.t1_id;
Объяснение
Пример
-- Заказы с информацией о покупателе SELECT o.id, o.total, u.name, u.email FROM orders o INNER JOIN users u ON u.id = o.user_id WHERE o.status = 'paid';
Связанные термины
Анекдоты по теме
— Что такое N+1 проблема? — Загрузил список из 100 пользователей — 1 запрос. Потом для каждого загрузил заказы — 100 запросов. Итого 101 запрос вместо 1 с JOIN. — Как исправить? — prefetch_related / eager loading / JOIN.
В баре сидит DBA. К нему подходит молодой разработчик: — Я написал запрос на 500 строк. Там 12 уровней вложенных подзапросов, кросс-джойн на 8 таблиц, оконные функции внутри WHERE, а потом GROUP BY на хэш-таблицу с миллиардом строк. Он выполняется 3 дня. Как оптимизировать? DBA, не поднимая глаз от виски: — Очень просто. Пиши: TRUNCATE TABLE career_results. И иди в менеджеры.
ORM говорит SQL: — Милый, я скрываю твою сложность за красивыми объектами. SQL: — А я из-за тебя генерирую запросы с 50 JOIN, которые выполняются час.