Middle
Какие виды JOIN существуют в SQL и чем отличаются left join, right join и inner join?
sobes.tech AI
Ответ от нейросети
В SQL существуют несколько основных видов соединений (JOIN), которые позволяют объединять строки из двух и более таблиц по определённому условию:
- INNER JOIN — возвращает только те строки, у которых есть совпадения в обеих таблицах.
- LEFT JOIN (LEFT OUTER JOIN) — возвращает все строки из левой таблицы и совпадающие строки из правой; если совпадений нет, то в местах правой таблицы будут NULL.
- RIGHT JOIN (RIGHT OUTER JOIN) — аналогично LEFT JOIN, но возвращает все строки из правой таблицы.
- FULL JOIN (FULL OUTER JOIN) — возвращает все строки из обеих таблиц, заполняя NULL там, где нет совпадений.
- CROSS JOIN — декартово произведение двух таблиц, каждая строка первой таблицы соединяется с каждой строкой второй.
Пример INNER JOIN:
SELECT users.name, orders.amount
FROM users
INNER JOIN orders ON users.id = orders.user_id;
sobes.tech AI
Ответ от нейросети
В SQL существуют несколько видов JOIN, которые позволяют объединять строки из двух таблиц по определённому условию:
- INNER JOIN — возвращает только те строки, у которых есть совпадения в обеих таблицах.
- LEFT JOIN (LEFT OUTER JOIN) — возвращает все строки из левой таблицы и совпадающие строки из правой. Если совпадений нет, в полях правой таблицы будут NULL.
- RIGHT JOIN (RIGHT OUTER JOIN) — наоборот, возвращает все строки из правой таблицы и совпадающие из левой, с NULL там, где совпадений нет.
Пример:
Таблица A:
| id | name |
|---|---|
| 1 | Alice |
| 2 | Bob |
Таблица B:
| id | city |
|---|---|
| 1 | London |
| 3 | Berlin |
- INNER JOIN по id вернёт только id=1 (Alice и London).
- LEFT JOIN вернёт:
- id=1 (Alice, London)
- id=2 (Bob, NULL)
- RIGHT JOIN вернёт:
- id=1 (Alice, London)
- id=3 (NULL, Berlin)
Таким образом, LEFT и RIGHT JOIN сохраняют все строки из одной из таблиц, дополняя их данными из другой, а INNER JOIN — только совпадающие.