> Какие виды JOIN существуют и в чем разница между LEFT JOIN и INNER JOIN (Python)
Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы
Компании: ООО Диджитал Сектор Поддержка, Ozon, Sunlight
Стек: Python
> Пример ответа
В SQL существует несколько основных типов JOIN: INNER JOIN, LEFT JOIN (или LEFT OUTER JOIN), RIGHT JOIN, FULL OUTER JOIN и CROSS JOIN. Разница между LEFT JOIN и INNER JOIN заключается в том, какие строки включаются в результат.
- INNER JOIN возвращает только те строки, для которых найдено совпадение в обеих таблицах. Если в одной из таблиц нет соответствующей записи, строка исключается.
- LEFT JOIN возвращает все строки из левой таблицы (указанной первой), даже если в правой таблице нет совпадения. В таком случае столбцы из правой таблицы заполняются
NULL.
Пример на Python с использованием SQLite для наглядности:
PYTHONimport sqlite3conn = sqlite3.connect(':memory:')cur = conn.cursor()cur.execute('CREATE TABLE users (id INT, name TEXT)')cur.execute('CREATE TABLE orders (id INT, user_id INT, product TEXT)')cur.executemany('INSERT INTO users VALUES (?, ?)', [(1, 'Alice'), (2, 'Bob'), (3, 'Charlie')])cur.executemany('INSERT INTO orders VALUES (?, ?, ?)', [(1, 1, 'Book'), (2, 1, 'Pen'), (3, 3, 'Notebook')])# INNER JOIN - только пользователи с заказамиcur.execute('''SELECT users.name, orders.productFROM usersINNER JOIN orders ON users.id = orders.user_id''')print("INNER JOIN:", cur.fetchall()) # [('Alice', 'Book'), ('Alice', 'Pen'), ('Charlie', 'Notebook')]# LEFT JOIN - все пользователи, даже без заказовcur.execute('''SELECT users.name, orders.productFROM usersLEFT JOIN orders ON users.id = orders.user_id''')print("LEFT JOIN:", cur.fetchall()) # [('Alice', 'Book'), ('Alice', 'Pen'), ('Bob', None), ('Charlie', 'Notebook')]
Таким образом, INNER JOIN фильтрует строки, а LEFT JOIN гарантирует, что все записи из левой таблицы останутся в результате.
> Похожие задачи по Python
В чем разница между git rebase и merge
Что такое абстрактный класс в Python
Что такое лямбда-функции в Python и каковы их особенности?
В чем различия между HTTP/1.1 и HTTP/2
> Похожие задачи по backend
В чем разница между git rebase и merge
Что такое абстрактный класс в Python
Что такое лямбда-функции в Python и каковы их особенности?
В чем различия между HTTP/1.1 и HTTP/2
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью