SQL中的内连接(INNER JOIN)
提示
- 内连接(INNER JOIN)的作用:SQL 中的
INNER JOIN
命令根据两个表中共有的列连接这些表,并选择这些列中具有匹配值的行。 - INNER JOIN 语法:语法格式为
SELECT columns FROM table1 INNER JOIN table2 ON table1.column1 = table2.column2
,其中table1
和table2
是要连接的表,column1
和column2
是两个表中相关的列。 - INNER JOIN 的应用:
INNER JOIN
可以与WHERE
子句结合使用来进一步过滤行,可以使用别名简化查询,也可以连接多个表。
SQL 的 INNER JOIN
命令根据共同的列连接两个表,并选择这些列中具有匹配值的行。
示例
-- 从 Customers 表中选择 customer_id 和 first_name 列
-- 从 Orders 表中选择 amount
SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
INNER JOIN Orders
ON Customers.customer_id = Orders.customer;
这里,Customers
和 Orders
表根据 Customers.customer_id = Orders.customer
条件连接。上述代码排除了所有不满足此条件的行。
SQL 内连接(INNER JOIN)语法
SQL INNER JOIN
语句的语法是:
SELECT columns_from_both_tables
FROM table1
INNER JOIN table2
ON table1.column1 = table2.column2
这里,
table1
和table2
是要连接的两个表column1
是table1
中的列,column2
是table2
中的列
注意: 我们可以使用 JOIN
代替 INNER JOIN
。基本上,这两个子句执行相同的任务。
示例 1:SQL 内连接(INNER JOIN)
-- 连接 Customers 和 Orders 表
SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
JOIN Orders
ON Customers.customer_id = Orders.customer;
这是上述 SQL 查询的工作原理:
示例 2:SQL 内连接(INNER JOIN)
让我们看另一个例子。
FROM Categories
INNER JOIN Products
ON Categories.cat_id = Products.cat_id;
这里,SQL 命令基于 cat_id
列(在两个表中均存在)选择 Categories
和 Products
表之间的共同行。
使用 WHERE 子句的内连接(INNER JOIN)
我们可以将 WHERE
子句与 INNER JOIN
结合使用,以进一步过滤输出中的行。
-- 连接 Customers 和 Orders 表
-- 如果 amount 为 500 或更高,则返回行
SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
INNER JOIN Orders
ON Customers.customer_id = Orders.customer
WHERE Orders.amount >= 500;
使用别名的 SQL 内连接(INNER JOIN)
由于 join 查询可能很长,我们可以在 INNER JOIN
中使用 AS 别名 使我们的查询更简洁易懂。
-- 使用别名 C 代表 Categories 表
-- 使用别名 P 代表 Products 表
SELECT C.cat_name, P.prod_title
FROM Categories AS C
INNER JOIN Products AS P
ON C.cat_id= P.cat_id;
这里,SQL 命令在连接 Categories
和 Products
表时分别为它们指定了别名 C 和 P。