当前位置: 首页 > news >正文

SQL 多表查询速查:JOIN、子查询一文全掌握 - 详解

每个工程师的必备技能。本文总结了多表查询的常用写法,既能作为学习笔记,也能在面试中快速回忆。就是在实际构建和面试中,多表查询是SQL的核心考点之一。业务中几乎不可能只靠单表达成所有需求,因此掌握JOIN和子查询

一、为什么要用多表查询?

真实业务中,数据往往分散在不同表中,例如用户表和订单表。

查询用户的订单信息,就需要把这两张表的数据结合在一起。

SQL提供了JOIN和子查询两大手段,灵活完成多表数据整合。

二、JOIN 详解

1. INNER JOIN(内连接)

取两张表中匹配成功的数据。

SELECT u.id, u.name, o.order_id, o.amount

FROM users u

INNER JOIN orders o ON u.id = o.user_id;

只有users和orders同时匹配到的行才会被返回。

2. LEFT JOIN(左连接)

以左表为主,返回左表全部数据,如果右表没有匹配,则填充为NULL。

SELECT u.id, u.name, o.order_id

FROM users u

LEFT JOIN orders o ON u.id = o.user_id;

即使某些用户没有订单,也会出现在结果里。

3. RIGHT JOIN(右连接)

和LEFT JOIN相反,以右表为主,返回右表全部信息。

SELECT u.id, u.name, o.order_id

FROM users u

RIGHT JOIN orders o ON u.id = o.user_id;

4. FULL JOIN(全连接)

返回两张表的所有数据,匹配不上的部分填NULL。

⚠️ 注意:MySQL不直接支撑FULL JOIN,可以通过UNION组合LEFT JOIN和RIGHT JOIN来实现。

三、子查询(Subquery)

写在另一个SQL里的SQL。常见用法有三类:就是子查询

1. 标量子查询

子查询返回单个值,常用于比较。

SELECT name, salary

FROM employees

WHERE salary > (SELECT AVG(salary) FROM employees);

查询工资高于平均工资的员工。

2. 列子查询

子查询返回一列,常用于IN。

SELECT name

FROM users

WHERE id IN (SELECT user_id FROM orders WHERE amount > 100);

查询下过大额订单的用户。

3. 表子查询

子查询返回一张临时表,许可继续JOIN或SELECT。

SELECT t.user_id, COUNT(*) AS order_count

FROM (SELECT user_id FROM orders WHERE status = 'paid') t

GROUP BY t.user_id;

查询所有已支付订单的用户及订单数。

四、ON和WHERE的区别

很多初学者容易混淆ON和WHERE的区别。

ON:在表连接阶段起作用,决定两表如何匹配。

WHERE:在连接完毕后过滤结果。

举个例子:

SELECT u.id, u.name, o.order_id

FROM users u

LEFT JOIN orders o ON u.id = o.user_id

WHERE o.amount > 100;

注意,这里WHERE o.amount > 100会把没有订单的用户也过滤掉,效果相当于INNER JOIN。

倘若要保留没有订单的用户,应该把条件写在ON后面。

五、面试高频考点

1. INNER JOIN和LEFT JOIN的区别?

答:INNER JOIN只保留匹配行,LEFT JOIN保留左表全部行。

2. 子查询和JOIN的区别?

答:子查询可读性高,JOIN性能更好;面试时可提到“优化时更倾向于JOIN”。

3. ON和WHERE的执行顺序?

答:ON先于WHERE执行,影响结果集范围。

六、总结

多表查询核心两大工具:JOIN和子查询。

JOIN主要分为INNER、LEFT、RIGHT、FULL,不同场景灵活选择。

子查询分为标量、列、表三种类型。

注意ON和WHERE的区别,这是面试的常见考点。

掌握这些写法,能消除大多数业务查询问题,也是面试必问的重点。

建议:多写实际SQL,多用EXPLAIN分析执行计划,才能真正理解JOIN的性能差异。

http://www.gsyq.cn/news/14721.html

相关文章:

  • 14.单臂路由(2025年9月29日) - 教程
  • 2025 年检测器厂家推荐 TOP 品牌权威排名,防爆火焰 / 一体化火焰 / 紫外线火焰 / 离子火焰 / 红外线火焰 / 红紫外复合火焰 / 智能火焰检测器公司推荐
  • 【Git】Git 操作指令大全及运用场景详解
  • 9-29
  • 2025 年衬氟鹤管源头厂家 TOP 企业品牌推荐排行榜,天然气 / 低温 / LNG / 撬装 / 底装 / 火车 / 装卸车 / 上装 / 衬氟 / 下装鹤管公司推荐这 10 家
  • 20250928 组合计数
  • 绕过Cloudflare IP白名单限制的技术解析
  • 对于实现贪吃蛇游戏的超详细保姆级解析—下 - 教程
  • 2025 年热转印花膜厂家 TOP 企业品牌推荐排行榜,硅胶 / 五金 / 塑胶 / ABS / 涂料桶 / PP / 水杯 / 温变 / 冰变热转印花膜加工厂推荐
  • 2025 年生物除臭设备厂家 TOP 品牌企业推荐排行榜揭晓:印染厂污水 / 食品厂污水 / 污水处理厂 / 污水泵站 / 污水站 / 餐厨垃圾 / 屠宰场 / 厨余垃圾生物除臭设备公司推荐
  • 2025 年乡墅平台 TOP 服务机构平台推荐排行榜 ,乡墅设计 / 品牌 / 加盟 / 农村自建房 / 建别墅 / 一站式建 / 湖南 / 长沙乡墅服务商推荐这十家公司!
  • 2025 年美缝剂厂家 TOP 企业品牌推荐排行榜,深度剖析美缝剂公司实力与产品优势!
  • 深入理解 Qt 元对象系统:QMetaEnum 的应用与实践 - 指南
  • 2025 年褐藻寡糖厂家 TOP 企业品牌推荐排行榜,农业级 / 食品级 / G 型 / 化妆品级 / 饲料级 / 肥料用褐藻寡糖 / 褐藻寡糖钾盐 / 水剂 / 粉剂 / M 段公司推荐!
  • 2025 年橡胶软接头厂家 TOP 企业品牌推荐排行榜,法兰 / 可曲挠 / 挠性 / KXT / 耐油 / EPDM / 耐腐蚀 / 三元乙丙橡胶软接头 / 橡胶柔性软接头公司推荐!
  • 2025 聚焦人力资源管理系统厂商 TOP 推荐排行榜单,洞察人力资源管理系统前沿技术与服务实力!
  • 苏州昆山GEO优化/2025苏州GEO产品优化与谷歌出海营销服务商推荐:精准触达全球客户
  • 深入解析:从引流到生态:排队免单如何重构商家私域流量?
  • 2025 年集装袋厂家 TOP 企业品牌推荐排行榜,深度剖析优质厂家优势集装袋推荐这十家公司!
  • virtualbox新版安装指定路径--7.2版本之后
  • 2025 年隔音门厂家 TOP 企业品牌推荐排行榜,剧院,ktv,防火 ,软包 ,录音棚 ,静音 ,钢质 ,实验室 ,直播间隔音门推荐这十家公司!
  • AI Coding 让我两天完成图像编辑器 Monica 的国际化与多主题
  • 线程同步实战指南:从 bug 根源到锁优化的终极之路 - 教程
  • 2025 年数据恢复系统推荐转转大师数据恢复,深度剖析各款系统平台核心优势与适用场景数据恢复系统推荐指南
  • 详细介绍:抽丝剥茧的Transformer详解
  • macOS 上手记录
  • Google Drive批量转存他人分享的链接的文件
  • 异常检测
  • 2025 年物流公司服务 TOP 企业品牌推荐推荐榜,无锡到西安、无锡到太原、无锡到宁波、无锡到郑州、无锡到上海物流公司推荐!
  • AI元人文:于价值表征困境中试探