В чем разница между внутренним соединением, левым соединением, правым соединением и полным соединением? [дубликат]
этот вопрос уже есть ответ здесь:
в чем разница между INNER JOIN
, LEFT JOIN
, RIGHT JOIN
и FULL JOIN
в в MySQL?
3 ответов
чтение этой оригинальной статьи на Проект Код поможет вам лот: визуальное представление SQL присоединяется.
также проверьте этот пост:SQL SERVER-лучшая производительность - слева присоединиться или нет?.
найти оригинал на сайте: разница между JOIN и OUTER JOIN в MySQL.
ВНУТРЕННЕЕ СОЕДИНЕНИЕ получает все записи, которые являются общими для обеих таблиц на основе внешнего ключа
ЛЕВОЕ СОЕДИНЕНИЕ получает все записи из левой связанной таблицы, но если вы выбрали несколько столбцов из правой таблицы, если нет связанных записей, эти столбцы будут содержать NULL
ПРАВОЕ СОЕДИНЕНИЕ похоже на приведенное выше, но получает все записи в правой таблице
ПОЛНОЕ ПРИСОЕДИНЕНИЕ получает все записи из обоих таблицы и помещает NULL в столбцы, где связанные записи не существуют в противоположной таблице
предложение SQL JOIN используется для объединения строк из двух или более таблиц, на основе общего поля между ними.
в SQL доступны различные типы соединений:
ВНУТРЕННЕЕ СОЕДИНЕНИЕ: возвращает строки, когда есть совпадение в обеих таблицах.
ЛЕВОЕ СОЕДИНЕНИЕ: возвращает все строки из левой таблицы, даже если нет совпадений в таблице справа.
ПРАВОЕ ПРИСОЕДИНЕНИЕ: возвращает все строки из правой таблицы, даже если в левой таблице нет совпадений.
ПОЛНОЕ ПРИСОЕДИНЕНИЕ: он сочетает в себе результаты как левого, так и правого внешних соединений.
объединенная таблица будет содержать все записи из обеих таблиц и заполнять нули для отсутствующих совпадений с обеих сторон.
SELF JOIN: используется для присоединения таблицы к себе, как если бы таблица была двумя таблицами, временно переименовывая по крайней мере одну таблицу в SQL заявление.
КАРТЕЗИАНСКОЕ СОЕДИНЕНИЕ: возвращает декартово произведение наборов записей из двух и более соединяемых таблицах.
мы можем взять каждый первые четыре соединения в деталях:
у нас есть две таблицы со следующими ценности.
таблицы tablea
id firstName lastName
.......................................
1 arun prasanth
2 ann antony
3 sruthy abc
6 new abc
таблицы tableb
id2 age Place
................
1 24 kerala
2 24 usa
3 25 ekm
5 24 chennai
....................................................................
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
Примечание: это дает пересечение двух таблиц, т. е. строк, которые они имеют общие в TableA и TableB
синтаксис
SELECT table1.column1, table2.column2...
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;
приложите его в нашей таблице образца :
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
INNER JOIN TableB
ON TableA.id = TableB.id2;
Результат Будет
firstName lastName age Place
..............................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
ЛЕВОЕ СОЕДИНЕНИЕ
Примечание: даст все выбранные строки в таблице, а также любые общие выбранные строки в TableB.
синтаксис
SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;
приложите его в нашей таблице образца:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
LEFT JOIN TableB
ON TableA.id = TableB.id2;
результат
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
new abc NULL NULL
ПРАВОЕ ПРИСОЕДИНЕНИЕ
Примечание: даст все выбранные строки в TableB, плюс любые общие выбранные строки в таблице.
синтаксис
SELECT table1.column1, table2.column2...
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;
приложите его в нашей таблице образца:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
RIGHT JOIN TableB
ON TableA.id = TableB.id2;
результат
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
NULL NULL 24 chennai
ПОЛНОЕ ПРИСОЕДИНЕНИЕ
Примечание :он возвращает все выбранные значения из обеих таблиц.
синтаксис
SELECT table1.column1, table2.column2...
FROM table1
FULL JOIN table2
ON table1.common_field = table2.common_field;
приложите его в нашей таблице образца:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
FULL JOIN TableB
ON TableA.id = TableB.id2;
результат
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
new abc NULL NULL
NULL NULL 24 chennai
интересные Факт
для внутренних соединений порядок не имеет значения
для (левого, правого или полного) внешних соединений порядок имеет значение
лучше пойти проверить это ссылке это даст вам интересные подробности о порядке присоединения