SQL Inner Join
SQL INNER JOIN 关键词
Section titled “SQL INNER JOIN 关键词”理解 SQL INNER JOIN
Section titled “理解 SQL INNER JOIN”INNER JOIN 关键词选择在两个表中都有匹配值的记录。它是最常见的连接类型。
如果 table1 中的某一行根据连接条件在 table2 中找到对应的行,INNER JOIN 会将两行中的列组合成一个结果行。如果没有匹配项,这些行将被排除在结果之外。
SQL INNER JOIN 语法
Section titled “SQL INNER JOIN 语法”SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.join_column = table2.join_column;
或者,您通常可以直接使用 JOIN(在大多数 SQL 数据库中,这默认为 INNER JOIN):
SELECT column_name(s) FROM table1 JOIN table2 ON table1.join_column = table2.join_column;
从视觉上看,INNER JOIN 可以被视为两个集合的交集——只有在两个集合中都存在的元素(行)(基于连接条件)才会被返回。
演示数据库:Northwind
Section titled “演示数据库:Northwind”我们将使用 Northwind 示例数据库及其 Customers 和 Orders 表。
“Customers” 表的简化视图:
| CustomerID | CustomerName | Country |
|---|---|---|
| 1 | Alfreds Futterkiste | Germany |
| 2 | Ana Trujillo Emparedados y helados | Mexico |
| 3 | Antonio Moreno Taquería | Mexico |
| … |
“Orders” 表的简化视图:
| OrderID | CustomerID | OrderDate |
|---|---|---|
| 10308 | 2 | 1996-09-18 |
| 10309 | 37 | 1996-09-19 |
| 10310 | 77 | 1996-09-20 |
| … |
SQL INNER JOIN 示例
Section titled “SQL INNER JOIN 示例”以下 SQL 语句将只返回下过订单的客户及其订单 ID:
SELECT c.CustomerName, o.OrderIDFROM Customers cINNER JOIN Orders o ON c.CustomerID = o.CustomerIDORDER BY c.CustomerName;结果集的一部分可能如下所示:
| CustomerName | OrderID |
|---|---|
| Ana Trujillo Emparedados y helados | 10308 |
| Antonio Moreno Taquería | 10365 |
| … (其他下了订单的客户) |
重要注意事项:INNER JOIN 关键词选择两个表中所有符合连接条件 (Customers.CustomerID = Orders.CustomerID) 的行。如果在 “Customers” 表中有客户但在 “Orders” 表中没有任何匹配的订单,这些客户将 不会 出现在结果中。类似地,任何没有匹配客户的订单(如果可能存在孤立数据)也将被排除。
- 从多个表中检索相关数据(例如,用户资料及其帖子)。
- 根据是否存在相关数据来过滤记录(例如,已经被订购的产品)。
- 结合信息以生成存在直接关系的综合报告。