在数据库中,INNER JOIN(内连接) 是最常用的表连接方式之一,用来只返回两个表中满足连接条件的记录。
SELECT 列名
FROM 表A
INNER JOIN 表B
ON 表A.关联字段 = 表B.关联字段;
✅ 只返回:表A 和 表B 中都存在且满足条件的数据
users 表
| id | name |
|---|---|
| 1 | 张三 |
| 2 | 李四 |
| 3 | 王五 |
orders 表
| order_id | user_id | amount |
|---|---|---|
| 101 | 1 | 200 |
| 102 | 2 | 150 |
| 103 | 4 | 300 |
SELECT users.id, users.name, orders.order_id, orders.amount
FROM users
INNER JOIN orders
ON users.id = orders.user_id;
| id | name | order_id | amount |
|---|---|---|---|
| 1 | 张三 | 101 | 200 |
| 2 | 李四 | 102 | 150 |
⚠️ 王五(无订单)和 order_id=103(用户不存在)都不会出现
SELECT u.id, u.name, o.order_id
FROM users u
INNER JOIN orders o
ON u.id = o.user_id;
SELECT u.name, o.order_id, p.product_name
FROM users u
INNER JOIN orders o ON u.id = o.user_id
INNER JOIN products p ON o.product_id = p.id;
SELECT u.name, o.amount
FROM users u
INNER JOIN orders o ON u.id = o.user_id
WHERE o.amount > 100;
| 类型 | 返回结果 |
|---|---|
| INNER JOIN | 两表都匹配的数据 |
| LEFT JOIN | 左表全部 + 右表匹配(无匹配为 NULL) |
❌ 忘记 ON 条件(会变成笛卡尔积)
❌ 关联字段类型不一致
❌ 使用错误字段名
如果你有具体表结构或业务场景(比如学生-成绩、订单-用户),我可以直接帮你写 SQL。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。