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

news/2025/10/1 20:10:49/文章来源:https://www.cnblogs.com/lxjshuju/p/19122794

每个工程师的必备技能。本文总结了多表查询的常用写法,既能作为学习笔记,也能在面试中快速回忆。就是在实际构建和面试中,多表查询是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.mzph.cn/news/924232.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL复合查询(重点) - 详解

MySQL复合查询(重点) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

网站备案期间可以建站荣欣建设集团有限公司网站

目录 1.应用场景2.类似的数据同步工具3.DataX 与 Canal 有什么区别 DataX是阿里巴巴开源的一款数据同步工具,使用Java语言开发的。它提供了从各类数据源读取数据以及向各类数据源写入数据的功能,支持包括MySQL、Oracle、SQLServer、PostgreSQL、HDFS、HB…

14.单臂路由(2025年9月29日) - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

AtCoder Beginner Contest 424 425 部分题解

ABC424E注意到,若两根木棍长度相同,那么它们被操作的顺序也是相邻的。于是,若两根木棍“来源”相同,那么它们始终在同一“批次”中被操作。例如:\([1] \to [1/2, 1/2] \to [1/4, 1/4, 1/2] \to [1/4, 1/4, 1/4, 1…

网站怎么识别PC 手机装修设计灵感网站

文章目录 串的模式匹配 考纲内容 复习提示 1.简单的模式匹配算法 知识回顾 2.串的模式匹配算法——KMP算法 2.1字符串的前缀、后缀和部分匹配值 2.2KMP算法的原理是什么 3.KMP算法的进一步优化 串的模式匹配 考纲内容 字符串模式匹配 复习提示 本章是统考大纲第6章内…

【C++】Visual Studio+CMake 开发 C++ 入门指南:从环境搭建到项目实战 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

学习:uniapp全栈微信小程序vue3后台-额外/精彩报错篇 - 教程

学习:uniapp全栈微信小程序vue3后台-额外/精彩报错篇 - 教程2025-10-01 20:04 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !import…

织梦配置手机网站手机企业网站怎么做

0x01 初识NTLM协议 基本概念:NTLM(NT LAN Manager)认证是一种早期的Windows网络身份认证协议。它在Windows系统中用于验证用户的身份,并提供对网络资源的访问控制,它是一种基于Challenge/Response的认证机制。 认证流程 NTLM协议Challenge…

关于滚动数组

i & 1 还是太丑陋了,可以设一个 ind,每次 i++ 时 ind = 1 - ind。 i + 1 就是 1 - ind。

第九篇

今天是10月1日,ok也是终于等到了国庆节放假,不容易啊,坐了十几个小时的火车终于是顺利到家了。

2025 年宁波搬家公司推荐 TOP 权威榜单发布,多维度解读宁波搬家服务公司创新亮点举措

引言 在宁波这座不断发展的城市,搬家服务需求日益增长,但行业内却存在不少亟待解决的问题。部分小型搬家团队缺乏规范管理,服务质量参差不齐,常常出现物品损坏后推诿责任、坐地起价等现象,让消费者蒙受损失。有的…

2025 年检测器厂家推荐 TOP 品牌权威排名,防爆火焰 / 一体化火焰 / 紫外线火焰 / 离子火焰 / 红外线火焰 / 红紫外复合火焰 / 智能火焰检测器公司推荐

引言 在工业生产、能源供应、环境保护等众多领域,检测器作为关键的监测设备,其性能与质量直接关系到生产安全、效率及数据准确性。当前,检测器市场品牌众多,产品种类繁杂,技术水平参差不齐。部分厂家为追求短期利…

【Git】Git 操作指令大全及运用场景详解

【Git】Git 操作指令大全及运用场景详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

网站建设的目的和作用网店推广软文范例

摘要:本文整理自字节跳动基础架构工程师李国君,在 Streaming Lakehouse Meetup 的分享。幸福里业务是一种典型的交易、事务类型的业务场景,这种业务场景在实时数仓建模中遇到了诸多挑战。本次分享主要介绍幸福里业务基于 Flink & Paimon …

9-29

(1)今天预习了java的课程 (2)明天继续深造

10-1

(1)今天预习了java的课程 (2)明天继续深造

百度如何提交网站做网站建设推荐

概述 一种开源跨平台的序列化结构化数据的协议。可用于存储数据或在网络上进行数据通信。它提供了用于描述数据结构的接口描述语言(IDL),也提供了根据 IDL 产生代码的程序工具。Protocol Buffers的设计目标是简单和性能,所以与 XM…

网上商城网站建设体会青海百度关键词seo

虚拟现实(VR)技术的出现为我们提供了一种全新的在线教学方式。由广州华锐视点开发的VR线上教学资源平台,作为一个综合性的学习工具,正在教育领域迅速发展,并被越来越多的教育机构和学生所接受。那么,VR线上…

做网站需要几个服务器wordpress网站域名服务器

技术背景 随着智慧数字人、AI数字人的兴起,越来越多的公司着手构建​全息、真实感数字角色等技术合成的数字仿真人虚拟形象,通过“虚拟形象语音交互(T-T-S、ASR)自然语言理解(NLU)深度学习”,构…

2025母线槽源头厂家 TOP 工厂权威榜单揭晓,密集型、封闭、浇筑、耐火、防火、防水、插接式母线槽公司推荐!

引言母线槽作为电力系统中重要的输电设备,其质量与性能直接关系到电力传输的安全与稳定。当前,母线槽市场规模不断扩大,但行业内也存在诸多问题。部分源头厂家缺乏规范的生产标准,为降低成本使用劣质材料,导致产品…