如何实现MySQL多表联查

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

MySQL 多表联查

多表联查核心就是 JOIN(连接),分为:INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL 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 合并结果集
相关文章
|
1月前
|
人工智能 测试技术
公司从零开始推自动化测试,如何落地?
本文深度剖析团队自动化转型的底层逻辑:指出失败主因常是目标错位与管理缺位,而非技术本身。强调“三分技术、七分管理”,主张先对齐业务目标、小步试点、建立闭环与规范,并结合AI提效——但须严控生成质量与维护闭环。核心是将自动化打造成可持续演进的测试资产。
252 1
公司从零开始推自动化测试,如何落地?
|
1月前
|
缓存 测试技术 API
Qwen3.8-Flash 来了,Qwen3.8-Flash 功能详解,100万上下文、Agent、Coding 都加强了!
在大模型工程落地的真实场景当中,开发者长期面临一组难以平衡的矛盾:旗舰版本模型推理效果强,但是Token成本高,高并发业务大规模调用时开销压力巨大;轻量化模型成本低廉,但是上下文窗口有限,代码仓库读取、超长文档分析、长链路Agent任务很容易出现信息遗忘,工具调用、代码生成的稳定性不足。很多项目只能被迫采用混合策略,长文档先做文本切片拆分,再交给小模型处理,切片过程会丢失上下文关联信息,增加大量预处理开发工作量。
635 0
|
1月前
|
存储 弹性计算 人工智能
阿里云服务器价格全解析:轻量38元起、ECS云服务器99元起,按量包月包年新老用户优惠明细实操指南
对于个人开发者、小微企业以及初创团队而言,云服务器是数字化业务的基础载体,网站搭建、程序部署、AI模型调试、业务系统运行都离不开计算实例支撑。很多用户在选购云服务器的时候,最关心的就是实际价格、不同计费模式的差异,以及新老用户对应的优惠权益。市面上实例规格繁多,计费方式分为按量、包月、包年多种模式,活动特惠档位和常规原价差距巨大,如果不理清价格规则,很容易出现预算超支、选错实例规格、续费涨价等一系列问题。阿里云推出多款入门特惠实例,轻量应用服务器38元起,ECS云服务器99元起,优惠权益兼顾新用户与老用户群体。本文将完整梳理不同实例档位、计费模式、优惠明细,结合运维实操命令,讲解选型思路、成本
305 1
|
1月前
|
弹性计算 Linux 网络安全
阿里云ECS使用教程:云服务器远程连接教程,使用阿里云自带Workbench登录超简单!
阿里云ECS创建后,推荐使用内置Workbench工具远程连接:免密、免安装、支持无公网IP实例,浏览器直接操作,简单高效完成Linux服务器管理。阿里云服务器ECS官网:https://t.aliyun.com/U/AZBUsA
|
1月前
|
人工智能 API 调度
阿里云百炼大模型服务器平台深度解析:一站式AI模型训推、部署与API实操全教程
随着大模型技术大规模落地,不管是个人开发者做原型验证,还是企业搭建行业AI应用,都绕不开模型算力调度、推理服务部署、模型微调优化、应用集成等一系列难题。如果自行搭建整套大模型运行环境,需要采购高性能GPU算力,完成底层框架部署、网络调优、容灾维护,不仅硬件投入成本高昂,运维门槛同样很高,普通开发团队很难独立完成整套体系搭建。阿里云百炼作为一站式大模型服务器平台,整合了模型托管、算力调度、微调训练、推理部署、智能体编排、知识库检索增强等全套能力,把底层复杂的算力服务器集群做封装,开发者无需关心GPU硬件运维,只需要聚焦上层业务逻辑,就可以完成从模型调用、定制调优到业务系统上线的完整流程。本文将从
452 1
|
1月前
|
存储 弹性计算 运维
阿里云轻量应用服务器与 ECS 云服务器深度对比指南,差异、限制、新手选型、运维、实操命令与避坑指南
很多刚接触云计算的用户,在选购服务器的时候都会陷入一个疑问,同样都是算力实例,轻量应用服务器与ECS云服务器到底有什么不同。二者底层虽然存在一定关联,但是在产品定位、网络架构、计费模式、功能权限、使用限制上存在巨大差距。轻量应用服务器定位轻量化单机应用,面向个人、学生、小型初创者,追求开箱即用,降低上云门槛;ECS属于标准企业级算力产品,开放完整的底层能力,适配从开发测试到大规模集群业务的全场景需求。不少用户盲目跟风选购,要么买了轻量之后发现高级功能无法使用,业务扩容处处受限;要么选用ECS做简单个人项目,造成资源预算浪费。本文会从适用人群、业务场景、计费、网络、镜像、功能限制、成本、海外节点
231 1
|
1月前
|
存储 人工智能 安全
AI 赋能下医疗门户钓鱼攻击风险与行业协同防御研究
本文以费城MyChart Medicare钓鱼事件为案例,剖析生成式AI赋能下医疗钓鱼的攻击机理、老年群体心理弱点及数据泄露衍生风险;评估Health-ISAC跨机构协同预警成效与患者端传导不足等现实局限,提出强化身份认证、优化情报触达、完善受害处置等多维防御路径。(239字)
75 0
|
1月前
|
编解码 运维 前端开发
阿里云Qwen3.7‑Plus多模态智能体全解析:百万上下文、GUI视觉操控、代码能力与API实操教程
传统多模态大模型大多局限于看图问答、图片描述,只完成信息理解,无法基于视觉画面完成后续的执行动作,很难打通“看懂界面‑规划步骤‑调用工具‑交付结果”完整闭环。在RPA自动化、UI测试、前端代码生成、复杂智能体工作流场景中,不仅需要模型看懂截图、图表、界面,还需要模型识别控件坐标、规划操作流程、生成可运行代码,联动各类工具完成长周期复杂任务。Qwen3.7‑Plus作为一款面向工程落地的多模态交互混合智能体基座,将视觉感知、语言推理、工具调用、代码生成整合进同一个模型循环,拥有百万级上下文窗口,原生支持GUI屏幕视觉操控,具备强悍代码生成能力,兼容主流智能体开发框架,可以直接通过百炼平台对外提供
169 0
|
1月前
|
人工智能 缓存 Shell
DeepSeek Harness v0.1全量实测:“一切皆插件”AI Agent底座,本地部署、实战项目与排错完整教程
大模型本身擅长思考与文本生成,但原生能力无法直接读写本地文件、执行终端命令、调用网页接口、做多层任务自检。很多AI编程工具仅仅封装固定的能力集合,扩展能力受限,想要增加新工具、修改执行流程就要改动大量源码。DeepSeek Harness(dsh)作为开源Agent运行底座正式发布,提出核心公式**Agent = Model + Harness**:模型负责推理思考,Harness作为“挽具”,承担上下文管理、工具调度、任务编排、自检反馈、权限护栏整套工程运行能力,口号为**一切皆插件**,模型、工具、会话、存储、UI全部以插件形式实现,开发者无需修改内核源码,即可自由替换、重组全部能力。搭配
321 0

热门文章

最新文章