Top.Mail.Ru
Ответы

Какая разница между INNER JOIN(JOIN) и LEFT JOIN или RIGHT JOIN НА ПРИМЕРЕ?

Какая разница между INNER JOIN(JOIN) и LEFT JOIN или RIGHT JOIN НА ПРИМЕРЕ?

По дате
По рейтингу
Аватар пользователя
Новичок
8лет

INNER JOIN - выдаёт только те строки, которые есть одновременно в обеих таблицах.

LEFT JOIN - выдаёт все строки левой таблицы, независимо от существования данных в правой таблице (если в правой таблице подходящей строки нет, то все её поля заполняются NULL).

RIGHT JOIN - выдаёт все строки правой таблицы, независимо от существования данных в левой таблице (если в левой таблице подходящей строки нет, то все её поля заполняются NULL).

Таблица A: поле id со значениями 1, 2
Таблица B: поле id со значениями 2, 3

SELECT a.id AS a_id, b.id AS b_id FROM a INNER JOIN b ON a.id = b.id;
Вернёт одну строку: a_id: 2, b_id: 2

SELECT a.id AS a_id, b.id AS b_id FROM a LEFT JOIN b ON a.id = b.id;
Вернёт две строки: a_id: 1, b_id: NULL и a_id: 2, b_id: 2

SELECT a.id AS a_id, b.id AS b_id FROM a RIGHT JOIN b ON a.id = b.id;
Вернёт две строки: a_id: 2, b_id: 2 и a_id: NULL, b_id: 3.

Аватар пользователя
Просветленный
8лет
Аватар пользователя
Искусственный Интеллект
8лет

При LEFT JOIN, если не будет найдено ни одного совпадения по ключу, строка всё равно отобразится, но с пустыми значениями из второй таблицы.