温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SQL怎么查多个表

发布时间:2026-09-01 08:20:13 来源:亿速云 阅读:112 作者:小樊 栏目:编程语言

在 SQL 中,“查多个表”通常有以下几种常见方式,具体用哪种取决于表之间的关系你想要的结果形式


一、表连接查询(最常用)

1️⃣ INNER JOIN(内连接)

只返回两个表都匹配的数据

SELECT a.id, a.name, b.order_id
FROM users a
INNER JOIN orders b
ON a.id = b.user_id;

✅ 适用:用户和订单、学生和成绩等有对应关系的表


2️⃣ LEFT JOIN(左连接)

返回左表全部,右表没有就为 NULL

SELECT a.id, a.name, b.order_id
FROM users a
LEFT JOIN orders b
ON a.id = b.user_id;

✅ 适用:查“所有用户,有没有订单都可以”


3️⃣ RIGHT JOIN(右连接)

和 LEFT JOIN 相反

SELECT a.id, b.order_id
FROM users a
RIGHT JOIN orders b
ON a.id = b.user_id;

4️⃣ FULL JOIN(全连接,MySQL 不支持)

SELECT *
FROM A
FULL JOIN B
ON A.id = B.id;

(MySQL 可用 UNION 实现)


二、多表同时查(无直接关系)

5️⃣ 逗号分隔(隐式连接,不推荐)

SELECT *
FROM users, orders
WHERE users.id = orders.user_id;

⚠️ 容易写成笛卡尔积,不建议新项目使用


三、子查询(嵌套查多个表)

SELECT *
FROM users
WHERE id IN (
    SELECT user_id FROM orders
);

✅ 适用:先查一个表,再用结果查另一个


四、UNION(纵向合并多个表)

表结构要一致

SELECT name FROM table1
UNION
SELECT name FROM table2;

✅ 适用:多个表结构相同(如分表)


五、实际示例(3 个表)

SELECT u.name, o.order_id, p.product_name
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN products p ON o.product_id = p.id;

选型建议

场景 推荐方式
表有关联 JOIN
表无关联但结构相同 UNION
条件依赖另一张表 子查询
要“全量 + 关联” LEFT / RIGHT JOIN

如果你愿意,可以把表结构或具体需求发给我,我可以直接帮你写 SQL ✅

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI