Назад к вопросам
Senior
8
Расскажите про виды JOIN в SQL и объясните разницу между ними.
Компании, где спрашивали
Алабуга
Ответ от нейросети
sobes.tech AI
В SQL существуют несколько видов JOIN, которые позволяют объединять данные из двух и более таблиц по определённому условию.
Основные виды JOIN:
- INNER JOIN — возвращает только те записи, у которых есть совпадения в обеих таблицах.
- LEFT JOIN (LEFT OUTER JOIN) — возвращает все записи из левой таблицы и совпадающие из правой; если совпадений нет, в полях правой таблицы будут NULL.
- RIGHT JOIN (RIGHT OUTER JOIN) — аналогично LEFT JOIN, но возвращает все записи из правой таблицы.
- FULL JOIN (FULL OUTER JOIN) — возвращает все записи из обеих таблиц, где нет совпадений — NULL в соответствующих полях.
Разница между ними в том, какие записи сохраняются при отсутствии совпадений:
- INNER JOIN исключает записи без совпадений.
- LEFT JOIN сохраняет все из левой таблицы.
- RIGHT JOIN сохраняет все из правой таблицы.
- FULL JOIN сохраняет все из обеих таблиц.
Пример:
SELECT * FROM A
INNER JOIN B ON A.id = B.a_id;
SELECT * FROM A
LEFT JOIN B ON A.id = B.a_id;
SELECT * FROM A
RIGHT JOIN B ON A.id = B.a_id;
SELECT * FROM A
FULL JOIN B ON A.id = B.a_id;
В Go при работе с базой через SQL-запросы или ORM нужно понимать, какой JOIN использовать для получения нужных данных и оптимизации запросов.