MariaDB JOIN 关键字用于根据两个或多个表之间的公共列组合行。 MariaDB 中有四种类型的 JOIN:
- INNER JOIN: 有时称为简单 JOIN。它根据两个表中的匹配行返回记录。
- LEFT JOIN: 有时称为左外连接。它返回包含左表中的所有行和右表中的匹配行的记录。
- RIGHT JOIN :有时称为右外连接。它返回包含右表中所有行和左表中匹配行的记录。
- CROSS JOIN :返回包含两个表中所有行的记录。它有时被称为 CARTESIAN JOIN,因为在没有 WHERE 条件的情况下,它的行为类似于 CARTESIAN Product,即结果集中的行数是两个表的行数的乘积。
示例:
考虑一个数据库,其中包含名为 Employee 和 Contact_Info 的表,并具有以下记录:
表 1:Employee 表
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
表 2:Contact_Info 表
Phone_Number | EmpID | Address | Gender |
---|---|---|---|
+1-8054098000 | 2 | Brooklyn, New York, USA | F |
+33-147996101 | 3 | Grenelle, Paris, France | M |
+31-201150319 | 4 | Geuzenveld, Amsterdam, Netherlands | F |
+86-1099732458 | 6 | Yizhuangzhen, Beijing, China | M |
+65-67234824 | 7 | Yishun, Singapore | M |
+81-357799072 | 8 | Koto City, Tokyo, Japan | M |
JOIN 关键字与基于公共列EmpID 的Employee 和Contact_Info 表一起使用。它根据两个表中的匹配情况返回Name、Age 和Address 列。查询如下:
SELECT Employee.Name, Employee.Age, Contact_Info.Address
FROM Employee
JOIN Contact_Info
ON Employee.EmpID = Contact_Info.EmpID;
这将产生如下所示的结果:
Name | Age | Address |
---|---|---|
Marry | 24 | Brooklyn, New York, USA |
Jo | 27 | Grenelle, Paris, France |
Kim | 30 | Geuzenveld, Amsterdam, Netherlands |
Huang | 28 | Yizhuangzhen, Beijing, China |