如何使用inner join_mysql内连接用法

来源:这里教程网 时间:2026-02-28 20:34:37 作者:

MySQL 中的 INNER JOIN 用于从两个或多个表中返回**匹配的记录**,即只保留连接条件成立的行。它是最常用、最基础的连接方式,理解它对写好关联查询至关重要。

INNER JOIN 的基本语法

标准写法如下:

SELECT 字段列表
FROM 表1
INNER JOIN 表2 ON 表1.字段 = 表2.字段;

注意:

INNER
关键字可省略,直接写
JOIN
默认就是内连接;
ON
后面必须指定明确的关联条件,通常是主键与外键的对应关系;
• 字段名若在多个表中存在,需用
表名.字段名
明确限定,避免歧义。

实际例子:查用户订单信息

假设有两张表:

users
(id, name, email)
orders
(id, user_id, product, amount)

要查出“每个订单对应的用户名和邮箱”,可用:

SELECT o.id, u.name, u.email, o.product, o.amount
FROM users u
INNER JOIN orders o ON u.id = o.user_id;

结果中不会出现没有下单的用户,也不会出现

user_id
users
表中找不到的订单——这就是内连接的“严格匹配”特性。

多表 INNER JOIN 写法

连接三个及以上表时,只需连续添加

INNER JOIN ... ON ...

SELECT u.name, o.product, p.category
FROM users u
INNER JOIN orders o ON u.id = o.user_id
INNER JOIN products p ON o.product_id = p.id;

每一步都基于前一个结果继续筛选,逻辑清晰,但要注意连接顺序不影响最终结果(只要条件正确),不过会影响执行效率,建议把数据量小的表放在前面或合理使用索引。

常见注意事项

如果连接字段有 NULL 值,这些行会被自动过滤掉(因为
NULL = 任何值
结果为 FALSE)
连接条件尽量使用索引字段,否则可能触发全表扫描,大幅降低性能 别名(如
u
,
o
)不是必须的,但强烈推荐,让 SQL 更简洁易读
不要混淆
WHERE
ON
:多表连接时,过滤条件写在
ON
是连接逻辑的一部分;写在
WHERE
是对连接结果的二次筛选,影响结果集大小

相关推荐