На этот вопрос уже есть ответ:
В чем разница между INNER JOIN
, LEFT JOIN
, RIGHT JOIN
а также FULL JOIN
в MySQL ?
На этот вопрос уже есть ответ:
В чем разница между INNER JOIN
, LEFT JOIN
, RIGHT JOIN
а также FULL JOIN
в MySQL ?
Чтение этой оригинальной статьи о Проект кода вам помогут: Визуальное представление соединений SQL ,
Также проверьте этот пост: SQL SERVER - лучшая производительность - LEFT JOIN или NOT IN? ,
Найдите оригинал на: Разница между JOIN и OUTER JOIN в MySQL ,
ВНУТРЕННЕЕ СОЕДИНЕНИЕ получает все записи, которые являются общими для обеих таблиц на основе внешнего ключа
ВЛЕВО получает все записи из связанной таблицы LEFT, но если вы выбрали некоторые столбцы из таблицы RIGHT, если нет связанных записей, эти столбцы будут содержать NULL
ПРАВОЕ СОЕДИНЕНИЕ как выше, но получает все записи в таблице RIGHT
ПОЛНОЕ СОЕДИНЕНИЕ получает все записи из обеих таблиц и помещает NULL в столбцы, где соответствующие записи не существуют в противоположной таблице
Предложение SQL JOIN используется для объединения строк из двух или более таблиц, основанные на общем поле между ними.
В SQL доступны разные типы соединений:
ВНУТРЕННЕЕ СОЕДИНЕНИЕ : возвращает строки, когда есть совпадение в обеих таблицах.
ВЛЕВО : возвращает все строки из левой таблицы, даже если в правой таблице нет совпадений.
ПРАВОЕ СОЕДИНЕНИЕ : возвращает все строки из правой таблицы, даже если в левой таблице нет совпадений.
ПОЛНОЕ СОЕДИНЕНИЕ : Он объединяет результаты как левого, так и правого внешних соединений.
Объединенная таблица будет содержать все записи из обеих таблиц и заполнять NULL для отсутствия совпадений с обеих сторон.
САМОЕ ПРИСОЕДИНЕНИЕ : используется для объединения таблицы в себя, как если бы в таблице были две таблицы, временно переименовывая по крайней мере одну таблицу в инструкции SQL.
Присоединение к CARTESIAN : возвращает декартово произведение наборов записей из двух или более объединенных таблиц.
Мы можем взять каждый первый четыре соединения в деталях:
У нас есть две таблицы со следующими значениями.
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
.................................................. ..................
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
Заметка : он дает пересечение двух таблиц, т.е. ряды, которые они имеют в таблице и таблице
Синтаксис
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
ВЛЕВО
Заметка : даст все выбранные строки в таблицеAU, а также любые общие выбранные строки в таблице.
Синтаксис
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
ПРАВОЕ СОЕДИНЕНИЕ
Заметка : даст все выбранные строки в таблице, а также любые общие выбранные строки в таблицеAU.
Синтаксис
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
Интересен тот факт
Для INNER присоединяется порядок не имеет значения
Для (ВЛЕВО, ВПРАВОЕ ИЛИ ПОЛНОЕ) ВНЕШНИЕ соединения, порядок
Лучше пойти проверить это Ссылка он предоставит вам интересные сведения о порядке подачи заявки