RIGHT JOIN
Возвращает все строки из правой таблицы. Для строк без пары в левой — NULL.
SELECT ... FROM t1 RIGHT JOIN t2 ON t1.id = t2.t1_id;Объяснение
Пример
-- Эквивалентные запросы
SELECT * FROM orders o RIGHT JOIN users u ON u.id = o.user_id;
-- То же самое:
SELECT * FROM users u LEFT JOIN orders o ON o.user_id = u.id;Связанные термины
Анекдоты по теме
Рекурсивный CTE для иерархии: WITH RECURSIVE tree AS ( SELECT id, name, parent_id, 0 AS depth FROM categories WHERE parent_id IS NULL UNION ALL SELECT c.id, c.name, c.parent_id, t.depth + 1 FROM categories c JOIN tree t ON c.parent_id = t.id ) SELECT * FROM tree ORDER BY depth, name; Программист: это чище чем 10 JOIN!
Встречаются INNER JOIN и LEFT JOIN. LEFT JOIN говорит: — Ты слишком строгий: если нет совпадения — сразу вон. А я даже пустоту оставляю. INNER JOIN: — Да, зато у меня нет дырок в отчётах.
— Что такое SELF JOIN? — Таблица, которая джойнится сама с собой. — Зачем? — Найти всех сотрудников и их менеджеров из одной таблицы employees: SELECT e.name, m.name AS manager FROM employees e JOIN employees m ON e.manager_id = m.id;