📅  最后修改于: 2023-12-03 15:05:18.628000             🧑  作者: Mango
在 SQL 中,可以使用 JOIN
关键字将两个或多个表的行合并为一个结果集。在本文中,我们将介绍两种常见的方法来合并两个表的结果。
内连接是最常见的表连接类型,它只返回两个表中共有的行。例如,我们有两个表 Employees
和 Departments
,它们的结构如下:
Employees Table:
+----+-----------+----------+--------+
| ID | FirstName | LastName | DeptID |
+----+-----------+----------+--------+
| 1 | John | Smith | 1 |
| 2 | Jane | Doe | 1 |
| 3 | Tom | Jones | 2 |
+----+-----------+----------+--------+
Departments Table:
+--------+-------------+
| DeptID | DeptName |
+--------+-------------+
| 1 | Sales |
| 2 | IT |
| 3 | Marketing |
+--------+-------------+
如果我们想要查询每个雇员的名字和所属部门的名称,我们可以使用内连接来将这两个表合并起来:
SELECT FirstName, LastName, DeptName
FROM Employees
INNER JOIN Departments
ON Employees.DeptID = Departments.DeptID;
这会返回以下结果:
+-----------+----------+-------------+
| FirstName | LastName | DeptName |
+-----------+----------+-------------+
| John | Smith | Sales |
| Jane | Doe | Sales |
| Tom | Jones | IT |
+-----------+----------+-------------+
另一种常见的连接类型是外连接,它可以返回两个表中的所有行,即使它们没有匹配的行。外连接分为左外连接和右外连接,取决于您希望从哪个表返回所有行。
以左外连接为例,我们可以查询每个部门以及该部门的所有员工。如果一个部门没有任何员工,我们也会返回该部门的信息。以下是查询的 SQL 代码:
SELECT DeptName, FirstName, LastName
FROM Departments
LEFT OUTER JOIN Employees
ON Departments.DeptID = Employees.DeptID;
这会返回以下结果:
+-------------+-----------+----------+
| DeptName | FirstName | LastName |
+-------------+-----------+----------+
| Sales | John | Smith |
| Sales | Jane | Doe |
| IT | Tom | Jones |
| Marketing | NULL | NULL |
+-------------+-----------+----------+
可以看到,在最后一行中,FirstName
和 LastName
值为空。这是因为 Marketing
部门没有员工,所以在拓展 Employees
表时没有匹配到任何值。
使用内连接和外连接,您可以将两个或多个表合并为一个结果集。请记住:
LEFT
或 RIGHT
关键字。以上就是 SQL 合并两个表的结果的介绍和代码实现,希望对您有帮助。