13 left join 和 inner join 的区别?现场手写一条 SQL
2026/9/5...大约 2 分钟
13|left join 和 inner join 的区别?现场手写一条 SQL
开场概念先行:inner join 只返回两表都匹配的行;left join 以左表为准全部返回,右表没匹配的字段补 NULL。记忆点:left join 主表数据一条不丢——这是测试场景最常用的特性。
回答思路
第一步:马上给一个测试场景印证
比如订单表 left join 用户表,查有没有订单挂着不存在的用户——右表字段是 NULL 就说明有脏数据。联表不只是取数,还是数据完整性校验的手段。这个视角一给,你就不是背语法的。
第二步:手写题的准备方向,必练三类
- 多表联查:订单联用户联商品,查某时段的销售明细
- 聚合统计:group by 加 having,查每个用户的订单数和消费总额、筛出消费超一千的
- 排序取前 N:每个分类销量前三
面试手写基本从这三类里出。
第三步:主动补测试常用函数
count、sum、avg、distinct、like 模糊匹配、between 范围——数据核对天天用。
收尾:执行细节补救句
写错了别慌,讲清楚逻辑顺序(where 先过滤、group by 再聚合、having 筛聚合结果、最后排序)——逻辑对语法小错,不影响面试官对你的判断。
考察重点
| 维度 | 说明 |
|---|---|
| 企业动机 | SQL 是测试验证数据的硬技能:页面显示对不对要查库确认,接口落库对不对要写 SQL 核对。企业默认你会,这题答不上功能测试岗都悬 |
| 过线标准 | join 区别说清 + 一条多表聚合查询写对 |
| 区分度 | 能讲「left join 查脏数据」这种测试视角应用的,是天天和数据库打交道的;只背 join 定义的是没怎么用过 |
| 加分项 | 手写又快又准,或主动讲数据库验证在自己项目里的具体用法 |
| 减分项 | 写不出 group by,或分不清 where 和 having——这两个错一个基本就露底了 |
来源
整理自知识星球帖《面试情报 02|软件测试必备 20 题》,返回题库。