У чому різниця між inner join, left join і right join mysql - замітки аццкого кодера

INNER JOIN

Повертаються всі записи з таблиць table_01 і table_02, пов'язані за допомогою primary / foreign ключів, і відповідні умові WHERE для таблиці table_01. Якщо в якійсь із таблиць відсутній запис, відповідна сусідній, то в видачу така пара включена не буде. Іншими словами, видадуться тільки ті записи, які є і в першій, і в другій таблиці. Тобто вибірка йде фактично по зв'язку (ключу), видадуться тільки ті записи, які пов'язані між собою. «Самотні» записи, для яких немає пари в зв'язку, видані не будуть.

Код: SELECT * FROM table_01
INNER JOIN table_02
ON table_01.primary_key = table_02.foreign_key
WHERE table_01.column_01 = 'value'

Повертаються всі дані з «лівої» таблиці, навіть якщо не знайдено відповідників в «правої» таблиці ( «ліва» таблиця в SQL-запиті стоїть лівіше знака одно, «права» - правіше, тобто звичайна логіка правої і лівої руки). Іншими словами, якщо ми приєднуємо до «лівої» таблиці «праву», то виберуться всі записи відповідно до умов WHERE для лівої таблиці. Якщо в «правої» таблиці не було відповідностей по ключам, вони будуть повернуті як NULL. Таким чином, тут головною виступає «ліва» таблиця, і щодо неї йде видача. В умови ON «ліва» таблиця прописується першої по порядку (table_01), а «права» - другий (table_02):

Код: SELECT * FROM table_01
LEFT JOIN table_02
ON table_01.primary_key = table_02.foreign_key
WHERE table_01.column_01 = 'value'

RIGHT JOIN

Повертаються всі дані з «правою» таблиці, навіть якщо не знайдено відповідників в «лівої» таблиці. Тобто приблизно також, як і в LEFT JOIN, тільки NULL повернеться для полів «лівої» таблиці. Грубо кажучи, ця вибірка ставить на чільне місце праву «таблицю», щодо неї йде видача. Зверніть увагу на WHERE в наступному прикладі, умова вибірки зачіпає «праву» таблицю:

Код: SELECT * FROM table_01
RIGHT JOIN table_02
ON table_01.primary_key = table_02.foreign_key
WHERE table_02.column_01 = 'value'

Таким чином, ми розклали по поличках, в чому відмінність INNER, LEFT і RIGHT JOIN. Зрозуміло, представлена ​​вище інформація не нова, але вона може бути корисна починаючим програмістам, які часто плутаються в типах запитів.