SQL 中的联表查询(JOIN)用于把多张表按照某种关系组合在一起查询。下面从概念 → 语法 → 常见类型 → 示例一步步说明。
SELECT 列名
FROM 表A
[JOIN类型] 表B
ON 表A.关联字段 = 表B.关联字段;
核心点:
只返回两张表都匹配的数据。
SELECT u.name, o.order_id
FROM users u
INNER JOIN orders o
ON u.id = o.user_id;
✅ 结果:有订单的用户
返回左表全部,右表没有匹配则为 NULL。
SELECT u.name, o.order_id
FROM users u
LEFT JOIN orders o
ON u.id = o.user_id;
✅ 结果:所有用户(包括没下单的)
返回右表全部,左表没有匹配则为 NULL。
SELECT u.name, o.order_id
FROM users u
RIGHT JOIN orders o
ON u.id = o.user_id;
⚠️ 实际中较少用(可改写为 LEFT JOIN)
左右表都返回,不匹配的地方为 NULL
(MySQL 不支持,可用 UNION 模拟)
SELECT *
FROM A
LEFT JOIN B ON A.id = B.id
UNION
SELECT *
FROM A
RIGHT JOIN B ON A.id = B.id;
SELECT u.name, o.order_id, p.product_name
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN order_items oi ON o.id = oi.order_id
JOIN products p ON oi.product_id = p.id;
SELECT *
FROM users, orders; -- 数据爆炸
SELECT *
FROM users u
JOIN orders o ON u.id = o.user_id;
如果你愿意,可以:
我可以直接帮你写 SQL ✅
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。