Z
ZHANK
编程在线教程SQL 教程INNER JOIN 内连接
多表查询

INNER JOIN 内连接

理解表关联原理、ON 条件、多表 INNER JOIN

INNER JOIN 内连接

真实业务中数据分散在多张表里。JOIN 把两张表的行根据匹配条件"拼"在一起。INNER JOIN 只返回两表都能匹配上的行。

学完本章你将: 理解表关联原理、掌握 ON 条件、多表 JOIN。


JOIN 是什么

假设你有两张表:

users:                          orders:
id | name                      id | user_id | amount
1  | 小明                       1  | 1       | 99.9
2  | 小红                       2  | 1       | 50.0
                                3  | 2       | 30.0

INNER JOIN 会把 users.id = orders.user_id 的行拼在一起:

sql
SELECT u.name, o.amount
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
-- 结果:小明 99.9 / 小明 50.0 / 小红 30.0

语法详解

sql
SELECT 列列表
FROM1 别名
INNER JOIN2 别名 ON 关联条件
WHERE 其他条件;
  • 别名FROM users u → u 是 users 的别名,后面用 u.name 更简洁
  • ON:指定两表如何关联,通常是主键=外键

多表 JOIN

sql
-- 三表关联:用户 → 订单 → 订单明细
SELECT u.name, o.id AS order_id, p.name AS product
FROM users u
INNER JOIN orders o ON u.id = o.user_id
INNER JOIN order_items oi ON o.id = oi.order_id
INNER JOIN products p ON oi.product_id = p.id;

可省略 INNER

sql
-- 以下两条等价
SELECT * FROM users u INNER JOIN orders o ON u.id = o.user_id;
SELECT * FROM users u JOIN orders o ON u.id = o.user_id;

💡 关键理解: INNER JOIN 的结果行数取决于匹配成功的行数。如果某用户没订单,该用户不会出现在结果中(想保留用 LEFT JOIN)。