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 列列表
FROM 表1 别名
INNER JOIN 表2 别名 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)。