LEFT 与 RIGHT JOIN

SQL 数据连接

Maham Faisal Khan

Senior Content Developer, Data Science

INNER JOIN 示意图

基于 id 字段的 INNER JOIN 示意图

从上一课复用的示意图,显示两张表 left_table 与 right_table,以及对两表执行内连接后的结果集。不属于内连接结果的记录已被淡化。

SQL 数据连接

LEFT JOIN 初始示意图

  • LEFT JOIN 返回左表全部记录,以及右表中在连接字段上匹配的记录
    基于 id 字段的 LEFT JOIN 示意图

一张示意图,显示左表与右表,并用箭头指向两表在 id 列上匹配的记录。不属于左连接结果的记录已变灰。

SQL 数据连接

LEFT JOIN 示意图

基于 id 字段的 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

基于 id 字段的 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 数据连接

Passons à la pratique !

SQL 数据连接

Preparing Video For Download...