SQL Server 中的 JOIN:带示例的教程

我们可以使用 JOIN 语句从多个表中检索数据。SQL Server 中主要有 4 种不同类型的 JOIN。我们将通过示例学习 SQL Server 中的所有 JOIN。

  • INNER JOIN/简单 JOIN
  • LEFT OUTER JOIN/LEFT JOIN
  • RIGHT OUTER JOIN/RIGHT JOIN
  • FULL OUTER JOIN

INNER JOIN

此类型的 SQL Server JOIN 返回 JOIN 条件为真的所有表中的行。它采用以下语法:

SELECT columns
FROM table_1 
INNER JOIN table_2
ON table_1.column = table_2.column;

我们将使用以下两个表来演示:

学生表

INNER JOIN

费用表

INNER JOIN

以下命令通过示例演示了 SQL Server 中的 INNER JOIN:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
INNER JOIN Fee
ON Students.admission = Fee.admission

该命令返回以下结果:

INNER JOIN

我们可以确定哪些学生已支付费用。我们使用了两个表中具有公共值的列,即 admission 列。

LEFT OUTER JOIN

此类型的 JOIN 将返回左表中的所有行,加上右表中具有匹配值的记录。例如:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
LEFT OUTER JOIN Fee
ON Students.admission = Fee.admission

代码返回以下结果:

LEFT OUTER JOIN

没有匹配值的记录将在相应列中替换为 NULL。

RIGHT OUTER JOIN

此类型的 JOIN 返回右表中的所有行,以及左表中匹配值的行。例如:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
RIGHT OUTER JOIN Fee
ON Students.admission = Fee.admission

OUTER JOINS SQL Server 的语句返回以下结果:

RIGHT OUTER JOIN

上述输出的原因是,当在 admission 列上匹配时,费用表中的所有行都可以在学生表中找到。

FULL OUTER JOIN

此类型的 JOIN 在 JOIN 条件不为 TRUE 时返回两个表中的所有行,并将 NULL 值用于不匹配的行。例如:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
FULL OUTER JOIN Fee
ON Students.admission = Fee.admission

对于 SQL 中的 FULL OUTER JOINS 查询,代码返回以下结果:

FULL OUTER JOIN