full join 是连接操作符,返回两个表中的所有行,包括不匹配行,不匹配行使用 null 填充缺失值。使用场景:检索两表所有行,维护表关系,查找不匹配行。语法:select * from table1 full join table2 on table1.column = table2.column。
MySQL FULL JOIN 用法
问题:什么是 FULL JOIN?
回答: FULL JOIN 是一种连接操作符,它返回两个表中所有匹配的行以及不匹配的行。换句话说,它返回笛卡尔积,并用 NULL 值填充缺失的行。
用法:
语法如下:
SELECT *
FROM table1
FULL JOIN table2
ON table1.column = table2.column;
特点:
- 返回两个表中所有行,包括不匹配的行。
- 对于不匹配的行,缺失的列值将被填充为 NULL。
- FULL JOIN 是最全面的连接类型,因为它保证返回所有行。
何时使用:
FULL JOIN 通常用于以下情况:
- 当需要检索两个表中所有行时,即使存在不匹配。
- 当ต้องการ维护表之间的关系时,即使这些关系并不总是显式定义。
- 当需要查找不匹配的行时,例如查找在另一个表中没有记录的记录。
示例:
假设我们有两个表:
table1:
+----+--------+
| id | name |
+----+--------+
| 1 | John |
| 2 | Mary |
| 3 | Bob |
+----+--------+
table2:
+----+--------+
| id | address |
+----+--------+
| 1 | 123 Main St |
| 2 | 456 Elm St |
| 4 | 789 Oak St |
+----+--------+
执行以下 FULL JOIN 查询:
SELECT *
FROM table1
FULL JOIN table2
ON table1.id = table2.id;
结果:
+----+--------+----+--------+
| id | name | id | address |
+----+--------+----+--------+
| 1 | John | 1 | 123 Main St |
| 2 | Mary | 2 | 456 Elm St |
| 3 | Bob | NULL | NULL |
| NULL | NULL | 4 | 789 Oak St |
+----+--------+----+--------+
结果集包含两个表的所有行,包括不匹配行(id=3 和 id=4)。对于不匹配的行,address 列填充为 NULL。