Яка різниця між внутрішнім з'єднанням, лівим з'єднанням, правим з'єднанням і повним з'єднанням?
У чому різниця між INNER JOIN
, LEFT JOIN
, RIGHT JOIN
і FULL JOIN
?
в MySQL?
1586
3
У чому різниця між INNER JOIN
, LEFT JOIN
, RIGHT JOIN
і FULL JOIN
?
в MySQL?
Вам дуже допоможе ця оригінальна стаття на The Code Project: Visual Representation of SQL Joins.
Також ознайомтеся з цією статтею: SQL SERVER - Краща продуктивність - LEFT JOIN чи NOT IN?.
Знайдіть оригінал за адресою: Різниця між JOIN і OUTER JOIN в MySQL.
INNER JOIN отримує всі записи, які є спільними для обох таблиць на основі поданого речення ON.
LEFT JOIN отримує всі записи з ЛІВОЇ зв'язаної таблиці, але якщо ви вибрали деякі стовпці з ПРАВОЇ таблиці, то якщо в них немає пов'язаних записів, то ці стовпці будуть містити NULL.
RIGHT JOIN подібний до попереднього, але отримує всі записи з ПРАВОЇ таблиці.
FULL JOIN отримує всі записи з обох таблиць і ставить NULL в стовпці, де немає пов'язаних записів в протилежній таблиці.
Речення SQL JOIN використовується для об'єднання рядків з двох або більше таблиць, на основі спільного поля між ними.
У мові SQL існують різні типи об'єднань:
INNER JOIN: повертає рядки при наявності збігу в обох таблицях.
LEFT JOIN: повертає всі рядки з лівої таблиці, навіть якщо в правій таблиці немає збігів.
RIGHT JOIN: повертає всі рядки з правої таблиці, навіть якщо в лівій таблиці немає збігів.
ПОВНЕ ОБ'ЄДНАННЯ: Об'єднує результати як лівого, так і правого зовнішнього об'єднання.
Об'єднана таблиця буде містити всі записи з обох таблиць і заповнюватиметься NULL для відсутніх збігів з обох сторін.
SELF JOIN: використовується для приєднання таблиці до самої себе, як якщо б таблиця складалася з двох таблиць, тимчасово перейменовуючи принаймні одну таблицю в SQL-запиті.
CARTESIAN JOIN: повертає декартовий добуток наборів записів з двох або більше таблиць, що об'єднуються.
Ми можемо взяти кожні перші чотири об'єднання в Деталі:
У нас є дві таблиці з наступними значеннями.
Таблиця A
Таблиця B
....................................................................
ВНУТРІШНЄ ПРИЄДНАННЯ
Примітка: вказує на перетин двох таблиць, тобто на рядки, які є спільними в таблиціA та таблиціB
Синтаксис
Застосуємо його в нашому прикладі таблиці:
Результатом буде
ЛІВОРУЧ ПРИЄДНАТИСЯ
Примітка : виведе всі виділені рядки в ТаблиціA, а також будь-які спільні виділені рядки в ТаблиціB.
Синтаксис
Застосуємо його в нашому прикладі таблиці:
Результат
ПРАВОРУЧ ПРИЄДНАТИСЯ
Примітка : виведе всі виділені рядки в ТаблиціB плюс будь-які спільні виділені рядки в ТаблиціA.
Синтаксис
Застосуємо його в нашому прикладі таблиці:
Результат
ПОВНЕ ПРИЄДНАННЯ
Примітка :Поверне всі вибрані значення з обох таблиць.
Синтаксис
Застосуємо його в нашому прикладі таблиці:
Результат
Цікавий факт
Для приєднання до INNER не має значення порядок
Для (LEFT, RIGHT або FULL) OUTER з'єднань порядок має значення
Краще перевірте це Посилання, воно дасть вам цікаві подробиці про порядок об'єднання