温馨提示×

温馨提示×

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

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

SQL联表查询怎么用

发布时间:2026-09-16 12:42:15 来源:亿速云 阅读:84 作者:小樊 栏目:数据库

SQL 中的联表查询(JOIN)用于把多张表按照某种关系组合在一起查询。下面从概念 → 语法 → 常见类型 → 示例一步步说明。


一、基本语法

SELECT 列名
FROM 表A
[JOIN类型] 表B
ON 表A.关联字段 = 表B.关联字段;

核心点:

  • ON:指定两张表如何关联
  • JOIN 类型:决定匹配不到的数据怎么处理

二、常见 JOIN 类型

1️⃣ INNER JOIN(内连接,最常用)

只返回两张表都匹配的数据。

SELECT u.name, o.order_id
FROM users u
INNER JOIN orders o
ON u.id = o.user_id;

✅ 结果:有订单的用户


2️⃣ LEFT JOIN(左连接)

返回左表全部,右表没有匹配则为 NULL。

SELECT u.name, o.order_id
FROM users u
LEFT JOIN orders o
ON u.id = o.user_id;

✅ 结果:所有用户(包括没下单的)


3️⃣ RIGHT JOIN(右连接)

返回右表全部,左表没有匹配则为 NULL。

SELECT u.name, o.order_id
FROM users u
RIGHT JOIN orders o
ON u.id = o.user_id;

⚠️ 实际中较少用(可改写为 LEFT JOIN)


4️⃣ FULL 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;

四、常见易错点

❌ 忘记 ON 条件(笛卡尔积)

SELECT *
FROM users, orders;  -- 数据爆炸

✅ 正确写法

SELECT *
FROM users u
JOIN orders o ON u.id = o.user_id;

五、什么时候用联表查询?

  • 用户 + 订单
  • 商品 + 分类
  • 文章 + 作者
  • 任何“一对多 / 多对一”关系

如果你愿意,可以:

  • 给我你的表结构
  • 或告诉我想查什么数据

我可以直接帮你写 SQL ✅

向AI问一下细节

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

AI