如何实现MySQL多表联查

简介: MySQL多表联查核心是JOIN操作,包括INNER(交集)、LEFT(左表全量)、RIGHT(右表全量)连接;MySQL不支持FULL JOIN,可用LEFT+RIGHT UNION模拟。需注意ON/WHERE区别、避免笛卡尔积、字段别名及索引优化。(238字)

MySQL 多表联查

多表联查核心就是 JOIN(连接),分为:INNER JOINLEFT JOINRIGHT JOINFULL JOIN(MySQL 不支持,用 union 模拟),还有隐式连接(逗号写法)。

准备两张示例表

-- 用户表 user
CREATE TABLE user(
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(20),
  age INT
);

-- 订单表 order
CREATE TABLE `order`(
  id INT PRIMARY KEY AUTO_INCREMENT,
  user_id INT, -- 外键,关联user.id
  order_name VARCHAR(50)
);

1、内连接 INNER JOIN(最常用)

只返回两张表匹配上的数据,两边都有才出结果
语法:

SELECT 字段
FROM 表A
INNER JOIN 表B
ON 表A.关联字段 = 表B.关联字段;

示例:查询用户以及对应的订单

SELECT u.name, o.order_name
FROM user u
INNER JOIN `order` o
ON u.id = o.user_id;

别名:u 代表 user,o代表 order

隐式内连接(逗号写法,等价 inner join)

SELECT u.name, o.order_name
FROM user u,`order` o
WHERE u.id = o.user_id;

⚠️不要忘记 where 条件,否则会产生笛卡尔积(数据爆炸)

2、左连接 LEFT JOIN(LEFT OUTER JOIN)

以左边表为主,左表全部数据都展示;右表匹配不到,字段为 NULL

SELECT u.name, o.order_name
FROM user u
LEFT JOIN `order` o
ON u.id = o.user_id;

场景:查询所有用户,包含没有下单的用户

如果只想查左表有、右表没有的数据(没有订单的用户):

SELECT u.name
FROM user u
LEFT JOIN `order` o
ON u.id = o.user_id
WHERE o.id IS NULL;

3、右连接 RIGHT JOIN

以右边表为主,右表全部数据,左表匹配不到则 NULL

SELECT u.name, o.order_name
FROM user u
RIGHT JOIN `order` o
ON u.id = o.user_id;

4、全连接 FULL JOIN

MySQL 没有 FULL JOIN 关键字,想要左右全部数据,用 LEFT JOIN UNION RIGHT JOIN

SELECT u.name, o.order_name FROM user u LEFT JOIN `order` o ON u.id=o.user_id
UNION
SELECT u.name, o.order_name FROM user u RIGHT JOIN `order` o ON u.id=o.user_id;

5、三张及以上表联查

多张表就继续 JOIN ... ON 往后拼接

SELECT u.name,o.order_name,g.goods_name
FROM user u
LEFT JOIN `order` o ON u.id = o.user_id
LEFT JOIN goods g ON o.goods_id = g.id;

6、子查询实现多表(不是 JOIN,另一种方案)

-- where中子查询
SELECT * FROM user WHERE id IN (SELECT user_id FROM `order`);

-- from子查询(派生表)
SELECT * FROM (SELECT * FROM user WHERE age>18) t1
LEFT JOIN `order` o ON t1.id = o.user_id;

7、关键注意事项

  1. ON 和 WHERE 的区别
  • ON:join 连接时做匹配条件
  • WHERE:连接完成之后,对结果集过滤

left join 中,条件写 on 和 where 结果完全不一样!

示例坑点:

-- ❌错误:left join后where过滤order表,会把null数据过滤掉,退化成内连接
SELECT u.name,o.order_name FROM user u
LEFT JOIN `order` o ON u.id=o.user_id
WHERE o.order_name='手机';

-- ✅正确,把条件放on
SELECT u.name,o.order_name FROM user u
LEFT JOIN `order` o ON u.id=o.user_id AND o.order_name='手机';
  1. 避免笛卡尔积:join 必须写 on 关联条件
  2. 字段重名,必须指定表别名:u.id,不能只写id
  3. 性能:关联字段建议建立索引(外键字段加索引,联查速度提升巨大)

快速选型记忆

表格

连接类型 作用
INNER JOIN 两边匹配的数据
LEFT JOIN 左边全部,右边匹配
RIGHT JOIN 右边全部,左边匹配
UNION 合并结果集
相关文章
|
2天前
|
编解码 运维 前端开发
阿里云Qwen3.7‑Plus多模态智能体全解析:百万上下文、GUI视觉操控、代码能力与API实操教程
传统多模态大模型大多局限于看图问答、图片描述,只完成信息理解,无法基于视觉画面完成后续的执行动作,很难打通“看懂界面‑规划步骤‑调用工具‑交付结果”完整闭环。在RPA自动化、UI测试、前端代码生成、复杂智能体工作流场景中,不仅需要模型看懂截图、图表、界面,还需要模型识别控件坐标、规划操作流程、生成可运行代码,联动各类工具完成长周期复杂任务。Qwen3.7‑Plus作为一款面向工程落地的多模态交互混合智能体基座,将视觉感知、语言推理、工具调用、代码生成整合进同一个模型循环,拥有百万级上下文窗口,原生支持GUI屏幕视觉操控,具备强悍代码生成能力,兼容主流智能体开发框架,可以直接通过百炼平台对外提供
37 0
|
2天前
|
存储 人工智能 安全
AI 赋能下医疗门户钓鱼攻击风险与行业协同防御研究
本文以费城MyChart Medicare钓鱼事件为案例,剖析生成式AI赋能下医疗钓鱼的攻击机理、老年群体心理弱点及数据泄露衍生风险;评估Health-ISAC跨机构协同预警成效与患者端传导不足等现实局限,提出强化身份认证、优化情报触达、完善受害处置等多维防御路径。(239字)
25 0
|
2天前
|
缓存 测试技术 API
Qwen3.8-Flash 来了,Qwen3.8-Flash 功能详解,100万上下文、Agent、Coding 都加强了!
在大模型工程落地的真实场景当中,开发者长期面临一组难以平衡的矛盾:旗舰版本模型推理效果强,但是Token成本高,高并发业务大规模调用时开销压力巨大;轻量化模型成本低廉,但是上下文窗口有限,代码仓库读取、超长文档分析、长链路Agent任务很容易出现信息遗忘,工具调用、代码生成的稳定性不足。很多项目只能被迫采用混合策略,长文档先做文本切片拆分,再交给小模型处理,切片过程会丢失上下文关联信息,增加大量预处理开发工作量。
131 0
|
分布式计算 Hadoop Java
Spark 2.4.0 standalone 模式安装
## 技能标签 - 学会安装Spark 2.4.0 standalone模式环境安装 - Spark 集群环境maste,worker,history server 启动停止命令 - Spark master,worker,history server 配置和管理界面查看 - Spark ...
3678 0
|
5月前
|
存储 人工智能 缓存
企业模型成本治理:从“任务分层”到“AI网关”,5个结构抓手告别账单失控
企业大模型成本失控,根源常在任务混用、上下文冗余、失败无界等结构性问题。本文提出五大治理抓手:任务分层路由、上下文复用、失败预算管控、Batch批处理、统一观测体系,并强调需通过标准化治理层实现成本从“月底追溯”到“日常可控”的转变。
263 5
|
7月前
|
人工智能 算法 机器人
OpenClaw爆红抢谁饭碗?一句话执行任务重构App分发范式
OpenClaw 凭借“一句话执行任务”红遍硅谷。本文深度解析 AI 代理环境下 App 入口蒸发难题,探讨开发者如何利用 App智能传参安装 与 参数还原算法 实现 一键拉起 与 免填邀请码,在 AGI 时代重构 全渠道归因 体系。
|
存储 供应链 API
区块链技术在电商API中的应用:保障数据安全与交易透明
区块链技术在电商API中的应用,为数据安全与交易透明提供了新方案。通过数据加密、分布式存储、智能合约管理、商品溯源及实时结算等功能,有效提升电商数据安全性与交易可信度。然而,技术成熟度、隐私保护和监管合规等挑战仍需克服。未来,随着物联网、大数据等技术融合及政策支持,区块链将在电商领域发挥更大潜力,推动行业智能化发展。
|
8月前
|
人工智能 自然语言处理 物联网
大模型微调完全指南:从原理到实战,让你的AI更懂你
微调正让AI从“通用”走向“专属”。基于预训练大模型,通过少量数据即可定制化文本生成、行业问答等能力,成本低、效率高。LoRA等高效技术更让个人开发者轻松上手。掌握微调,人人皆可成为AI创造者。
783 0
|
9月前
|
JavaScript Java 关系型数据库
2026版基于springboot的大学生社团管理系统
本文探讨高校学生社团管理系统的研发背景与意义,分析当前国内研究现状,提出基于Spring Boot、Vue.js、MySQL及B/S架构的技术方案,旨在提升社团管理的信息化、智能化水平,推动校园文化可持续发展。
|
10月前
|
人工智能 搜索推荐 安全
商务邮件沟通效率提升85%:一套AI指令解决企业邮件痛点
本文基于3000+企业邮件案例,提供一套专业的AI商务邮件指令,通过数据驱动的方法论,帮助企业实现邮件沟通效率提升85%,客户转化率增加60%,年度ROI达400%。包含完整指令代码、实战案例和量化收益分析。
914 11