LEFT JOIN и RIGHT JOIN

Объединение данных в SQL

Maham Faisal Khan

Senior Content Developer, Data Science

Диаграмма INNER JOIN

Диаграмма INNER JOIN ON поле id

Диаграмма из предыдущего урока: две таблицы — left_table и right_table — и результирующий набор после выполнения внутреннего соединения. Записи, не участвующие в INNER JOIN, затемнены.

Объединение данных в SQL

Начальная диаграмма LEFT JOIN

  • LEFT JOIN возвращает все записи из левой таблицы и только те записи из правой, которые совпадают по указанному полю соединения
    Диаграмма LEFT JOIN ON поле id

Диаграмма двух таблиц — left table и right table — со стрелками, указывающими на совпадающие записи по столбцу id. Записи, не участвующие в LEFT JOIN, выделены серым.

Объединение данных в SQL

Диаграмма LEFT JOIN

Диаграмма LEFT JOIN ON поле id

Диаграмма двух таблиц — left table и right table — и результирующий набор после выполнения LEFT JOIN. Записи, не участвующие в LEFT JOIN, затемнены.

Объединение данных в SQL

Синтаксис LEFT JOIN

SELECT p1.country, prime_minister, president
FROM prime_ministers AS p1
LEFT JOIN presidents AS p2
USING(country);

Примечание. LEFT JOIN можно также записать как LEFT OUTER JOIN.

| country        | prime_minister    | president               |
|----------------|-------------------|-------------------------|
| Egypt          | Mostafa Madbouly  | Abdel Fattah el-Sisi    |
| Portugal       | Luís Montenegro   | Marcelo Rebelo de Sousa |
| Pakistan       | Shehbaz Sharif    | Asif Ali Zardari        |
| United Kingdom | Keir Starmer      | null                    | 
| India          | Narendra Modi     | Droupadi Murmu          |
| Australia      | Anthony Albanese  | null                    | 
...
Объединение данных в SQL

RIGHT JOIN

Диаграмма RIGHT JOIN ON поле id

Диаграмма двух таблиц — left table и right table — и результирующий набор после выполнения RIGHT JOIN. Записи, не участвующие в RIGHT JOIN, выделены серым.

Объединение данных в SQL

Синтаксис RIGHT JOIN

SELECT *
FROM left_table
RIGHT JOIN right_table
ON left_table.id = right_table.id;

Примечание. RIGHT JOIN можно также записать как RIGHT OUTER JOIN.

Объединение данных в SQL

RIGHT JOIN: президенты и премьер-министры

SELECT p1.country, prime_minister, president
FROM prime_ministers AS p1
RIGHT JOIN presidents AS p2
USING(country);
| country        | prime_minister   | president               |
|----------------|------------------|-------------------------|
| Egypt          | Mostafa Madbouly | Abdel Fattah el-Sisi    |
| Portugal       | Luís Montenegro  | Marcelo Rebelo de Sousa |
| USA            | null             | Joe Biden               |
| Uruguay        | null             | Luis Lacalle Pou        |     
| Pakistan       | Shehbaz Sharif   | Asif Ali Zardari        |
| Chile          | null             | Gabriel Boric           |      
| India          | Narendra Modi    | Droupadi Murmu          |      
Объединение данных в SQL

LEFT JOIN или RIGHT JOIN?

  • RIGHT JOIN используется реже, чем LEFT JOIN
  • Любой RIGHT JOIN можно переписать как LEFT JOIN
  • LEFT JOIN интуитивно понятнее при чтении и написании запросов слева направо
Объединение данных в SQL

Давайте потренируемся!

Объединение данных в SQL

Preparing Video For Download...