阿里测试题之join在数据库中的区别

2026中文大模型实测:Kimi、通义千问、豆包、文心一言真实工作流生产力对比 大语言模型(LLM)已从参数竞赛迈入场景落地阶段,其核心价值不再取决于C-Eval等封闭评测分数,而在于语义锚定、逻辑缝合、工具驯化与人机协奏四大工程化能力。在真实办公场景中,模型需处理长文档理解、多模态协同、结构化数据推理及创意生成等复合任务,这对上下文建模、插件调度与错误恢复提出严苛要求。本次基于2026年Q1最新API的实测聚焦‘真实工作流验证’,覆盖合同审查、语音+图像联合分析、销售数据BI转化等12类高频任务,揭示Kimi在语义锚定力与工具驯化度上的系统性优势,同时指出通义千问、豆包、文心一言在特 阅读详情

背景

QL中JOIN子句是用于把来自两个或多个表的数据连接起来,在这个过程中可能会添加一些过滤条件。昨天有小伙伴问,如下图的这两种SQL写法查询结果是否会一样?(好像这是某一年阿里的面试题)

在这里插入图片描述

这个问题提出来以后,多数小伙伴的回答是:查询结果应该是一样的吧,只是查询效率不一样。我当时的回答是,在Inner Join时这两种情况返回的结果是一样的,在Left、Right等情况时结果不一样。

案例

1、创建测试数据库和表并且插入用户测试的数据。

-- 创建数据库
CREATE DATABASE ods_study_1;

USE ods_study_1;

-- 创建表
CREATE TABLE ods_study_1.ods_study_join_a
(
study_id_a int
);

CREATE TABLE ods_study_1.ods_study_join_b
(
study_id_b int,
study_channel varchar(255)
);

-- 插入数据
INSERT INTO ods_study_1.ods_study_join_a(study_id_a) VALUES(1),(2),(3),(4),(5)

INSERT INTO ods_study_1.ods_study_join_b(study_id_b,study_channel) VALUES(1,'weixin'),(2,'zhihu'),(2,'zhihu'),(3,'toutiao');

2、查看一下原始的数据:

在这里插入图片描述

码字不易废话两句:有需要python学习资料的或者有技术问题交流 “点击”即可

结果验证

将上面的两个表Inner Join和Left Join,过滤条件分别放在on和where中。

1、Inner Join时

ON中设置过滤条件

SELECT 
 *
FROM 
 ods_study_1.ods_study_join_a A
Inner JOIN 
 ods_study_1.ods_study_join_b B
ON (A.study_id_a = B.study_id_b AND B.study_channel='weixin')

Where中设置过滤条件

SELECT 
 *
FROM 
 ods_study_1.ods_study_join_a A
Inner JOIN 
 ods_study_1.ods_study_join_b B
ON (A.study_id_a = B.study_id_b )
WHERE B.study_channel='weixin'

返回结果:

在这里插入图片描述

结论:Inner Join时过滤条件放在on和where中返回结果一致。

2、Left Join时

ON中设置过滤条件

SELECT 
 *
FROM 
 ods_study_1.ods_study_join_a A
LEFT JOIN 
 ods_study_1.ods_study_join_b B
ON (A.study_id_a = B.study_id_b AND B.study_channel='weixin')

返回结果:

在这里插入图片描述

Where中设置过滤条件

SELECT 
 *
FROM 
 ods_study_1.ods_study_join_a A
LEFT JOIN 
 ods_study_1.ods_study_join_b B
ON (A.study_id_a = B.study_id_b )
WHERE B.study_channel='weixin'

返回结果:

在这里插入图片描述

结论:Left Join时过滤条件放在on和where中返回结果不一致。

原因分析

可以这么理解,当两张表在Left Join时,会生成一张连接临时表,然后再将这张连接临时表返回给用户。

在On的情况下,是在生成临时表时起作用,但由于Left Join的性质,就是他不管On里面的过滤条件是否为真,都会返回左表里的记录。对于不满足条件的记录,右表字段全部是NULL。

在Where的情况下,是在临时表生成好以后起作用,在对临时表进行过滤。此时,只要条件不为真的行,全部都过滤掉了。

以上就是小编今天为大家带来的内容,小编本身就是一名python开发工程师,我自己花了三天时间整理了一套python学习教程,从最基础的python脚本到web开发,爬虫,数据分析,数据可视化,机器学习,等,这些资料有想要的小伙伴 " 点击 " 即可领取

Hive中join条件过滤on和where的区别 1、inner join inner join首先可以通过分区进行过滤,防止全表扫描。 inner join会自动为join的键(on d.id=u.department_id)添加is not null的过滤条件 inner join 下on和where后面的条件进行过滤,在inner join中where和on是同时进行过滤,没有顺序的区别 2、left/right join left/right join使用分区条件过滤,可以防止全表扫描,最优先过滤 left/right join在主表下进 阅读详情

相关推荐

Qt 5.12.8在Linux下编译qtvirtualkeyboard模块,我踩过的那些坑(附完整解决方案)

本文详细介绍了在Linux系统下为Qt 5.12.8单独编译qtvirtualkeyboard模块的完整解决方案。通过分析模块缺失原因、提供精准的编译步骤和常见问题处理,帮助开发者高效解决虚拟键盘模块缺失问题,避免重新编译整个Qt源码的繁琐过程。

weixin_29248611的博客 457

SQL中条件放在on后与where后的区别

SQL中on条件与where条件的区别          数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。       在使用left jion时,on和where条件的区别如下: 1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。 2、where条件是在临时表生成好后,再对临时表进行过滤的条...

weixin_34074740的博客 1140

Jetson AGX Orin到手必看:DP线选错黑屏、SSD不识别?这篇避坑指南帮你一次搞定

本文详细介绍了Jetson AGX Orin开发套件的硬件避坑指南,涵盖开箱检查、DP线选择、SSD兼容性等关键问题。通过实测数据和实用技巧,帮助开发者避免黑屏、存储不识别等常见问题,提升开发效率。特别推荐符合VESA认证的DP 1.4a线缆和兼容性优秀的SSD型号,确保设备稳定运行。

weixin_33696822的博客 433

SQL 中 条件放在on与where的区别

学无止境学无止境今天在写左连接sql时将过滤条件放在on后,发现并没有得到我想要的结果,于是百度了解了,现记录:数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 在使用 left join 时,on 和 where 条件的区别如下: 1、on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录。 2、where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left join 的含...

蜗牛 1489

PMSM无感foc控制(滑模-反正切-PLL)【仿真模型搭建教程】(附模型)

本文主要目的是教大家如何把文献中的公式转换成仿真模型。 首先介绍滑模控制的原理及如何搭建simulink模型。 1.1基于反电势估计位置原理 永磁同步电机在静止坐标系αβ下的电压方程: 扩展反电动势包含转子位置信息,并且αβ轴下扩展反电动势的反正切函数正好就等于位置角theta。 1.2 滑模控制原理(比较重要的点是以电机电流模型推导展开) 通过滑模观测得到鲁棒性比较高的αβ轴下扩展反电动势,并求其反正切函数,得到位置信息。 /*********************...

weixin_44769876的博客 1万+

自动驾驶必备:5分钟搞懂gPTP如何实现μs级时间同步(附开源代码)

本文深入解析了gPTP协议在自动驾驶系统中实现微秒级时间同步的核心机制与工程实践。针对多传感器融合与跨域协同的严苛需求,文章拆解了gPTP的频率同步、对等延迟测量与时间偏移校正三步流程,并提供了基于linuxptp和AVnu gPTP两大开源代码库的实战配置指南与性能评估方法,助力开发者构建高精度、高可靠的车载时间同步网络。

weixin_29211309的博客 167

注意,SQL 中 on 和 where 条件放置的差异

场景描述: 由于生产环境的表比较复杂,字段很多。这里我们做下简化,只为说明今天要聊的问题。 有两张表 tab1,tab2: tab1 数据如下: tab2 数据如下: 然后给你看下,我用来统计name='小白'的两条SQL: //① SELECT count(1) FROM tab1 LEFT JOIN tab2 ON tab1.NAME = tab2.NAME AND tab2.NAME = '小白'; // ② SELECT * FROM tab1 ..

m0_65618219的博客 1798

2026华为OD面试题029:勇攀数字高峰

在给定的数字地形图里寻找登山路径,数字代表当前位置的海拔高度。要求从最低海拔出发,不断攀登,最终到达最高山峰。地图保证最低海拔和最高山峰都只有一个。 登山规则: - 路径上的海拔必须严格递增 - 只能向上下左右 4 个方向移动 - 路径必须从最低海拔开始,到最高海拔结束 - 每个地点只能走一次 - 每一步的攀登高度差必须大于 0,且不超过指定值 `K` 输出满足条件的登山路径的数量。

琅嬛福地 112

图解sql中的where和on的区别

点击关注公众号,SQL干货及时获取后台回复:1024,获取海量学习资源 SQL刷题专栏 SQL145题系列 大家注意: 因为微信改了推送机制,会有小伙伴刷不到当天的文章, 一些比较实用的知识和信息,错过了就是错过了。 所以建议大家加个星标,就能第一时间收到推送了。经常会有读者有疑问,sql中关联条件是放where后面好,还是on后面好?今天就通过图形的方式给大家来解决这个问题。之前两章我们通过图解...

SQL数据库开发 2006

Nvidia Jetson 编解码开发(3)解决H265解码报错“PPS id out of range”

基于之前的开发程序通过Jetson Xavier NX 硬编码的H265发出后,上位机断点播放发出来的H265码流,会报“PPS id out of range” 错误。

jzwjzw19900922的博客 3809

Linux存储软件栈剖析之第5篇:F2FS文件系统

F2FS是三星专为NAND闪存设计的开源文件系统,通过异地更新、磨损均衡等机制优化闪存特性。其架构采用层次化存储管理(Block→Segment→Section→Zone)和多日志区域设计,基于数据热度分类(热/温/冷数据)提升性能。核心创新包括节点地址表(NAT)解决级联更新问题,以及基于成本的垃圾回收算法。F2FS通过检查点机制确保崩溃一致性,并利用并行访问能力充分发挥闪存性能优势,显著降低写放大效应,延长设备寿命。

指尖动听知识库 197

full outer join 与full join的区别_阿里测试题:join放在where和on的区别你知道吗?

背景QL中JOIN子句是用于把来自两个或多个表的数据连接起来,在这个过程中可能会添加一些过滤条件。昨天有小伙伴问,如下图的这两种SQL写法查询结果是否会一样?(好像这是某一年阿里的面试题)这个问题提出来以后,多数小伙伴的回答是:查询结果应该是一样的吧,只是查询效率不一样。我当时的回答是,在Inner Join时这两种情况返回的结果是一样的,在Left、Right等情况时结果不一样。案例1、创建测试...

weixin_39648432的博客 172

【MATLAB代码】基于水声通信(ACOMMS)下的到达时间差(TDOA)定位的AUV自主导航例程,附完整代码

水下AUV导航系统仿真研究 本研究基于到达时间差(TDOA)技术实现了水下自主航行器(AUV)的三维导航仿真系统。系统采用四个声学信标作为定位基准,通过TDOA测量数据迭代求解AUV位置。仿真结果表明: 导航性能:系统能够有效跟踪AUV从起点(30,30,-20)到目标点(70,70,-20)的航行轨迹,定位误差保持在合理范围内。 误差分析:定位误差变化曲线显示系统具有稳定的定位精度,平均误差为0.5米左右。 技术特点:采用两步最小二乘迭代算法求解非线性TDOA方程,提高了定位精度和计算效率。 该仿真系统为

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 320

阿里,字节跳动,美团任你选-分享这16道高频面试题,刷完你要是全会的话!

1.JDK8 新特性 Lambda 表达式-也是函数编程的一种方式(将函数做为参数) 方法的应用,应用已有的java类对象的方法或者构造器。与Lambda表达式相结合,方法应用使得语言构造更加简洁,从而减少代码的冗余 默认方法,默认方法就是一个在接口里边有了一个实现的方法 新工具-新的编译工具,如:Nashorn引擎jjs,类依赖分析器jdeps Stream API - 把真正的函数式编程风格引入到Java中。 Date Time API - 加强对日期与时间的处理 Optional 类 - O...

javajiaguo的博客 145

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

网易DBA校招笔试卷全解析:高频考点与备考实战经验

在互联网大厂的后端技术栈中,数据库始终是系统稳定性的核心底座,而MySQL作为最主流的关系型数据库之一,其性能优化与高可用架构设计能力,已成为数据库工程师岗位考察的重中之重。索引结构为什么选用B+树、事务隔离级别如何处理并发冲突、主从复制如何保障数据一致性,这些底层原理直接决定了工程师能否应对线上复杂的运维场景。从慢查询定位到死锁排查,从数据库设计到分库分表,每一个环节都影响着业务系统的响应速度与连续性。网易数据库管理工程师校招笔试卷正是围绕这些核心能力展开,通过SQL基本功、MySQL原理、架构设计、场景

weixin_34242509的博客 448

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

大厂Java面试技术栈与Spring Boot深度解析

Java技术栈在互联网大厂面试中占据核心地位,尤其Spring Boot作为现代Java开发的事实标准框架,其自动配置机制和启动流程是面试高频考点。自动配置通过@Conditional系列注解实现条件化Bean加载,这种设计模式显著提升了开发效率。在微服务架构下,服务注册发现和分布式事务成为系统稳定性的关键,常见的解决方案如Eureka、Nacos和Seata等中间件。对于性能优化,JVM调优和数据库索引策略是工程师必备技能,合理运用线程堆栈分析和EXPLAIN命令能快速定位瓶颈。掌握这些核心技术点,不仅能

weixin_34318272的博客 308

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

sql左关联查询,条件放在on后与where后区别

ON子句:用于控制联接的逻辑,决定了如何将左表和右表的记录匹配。将条件放在ON后,可以保留左表的所有记录,即使右表没有匹配的记录。WHERE子句:用于过滤查询结果,作用于整个结果集。将条件放在WHERE后,会在结果集中去除没有右表匹配的左表记录,甚至会改变LEFT JOIN为INNER JOIN。希望这个解释能帮助你更好地理解LEFT JOIN中ON和WHERE条件的区别!

C18298182575的博客 1725

对于SQL语句中where和on的理解

话不多说,先来结论 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 一、在使用left jion时,同时使用on和where条件,结果没有区别,前者是先求笛卡尔积然后按照on后面的条件进行过滤,后者是先用on后面的条件过滤,再用where的条件过滤。 二、在使用left jion(right jion同理)时,on和where条件的区别如下: 1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。 2、where条件是

KKGDGN的博客 5777

sql语句中的on和where的区别

sql语句中的on和where都是表示搜索条件. 在sql中有三种连接查询, cross join,inner join,和outer join 其中 cross join 和 inner join 有on和where的查询结果相同,但是在outer join 中 left join 和 right join ,查询结果并不相同. on条件是在生成临时表时使用,他不管条件是否为真,都会返回左表的数据. where条件则是在临时表生成之后,判断条件,若条件不符合,则删除数据. 在sql语句中执行的顺序,on在

weixin_43950187的博客 5620

SQL中JOIN时条件放在Where和On的区别

背景SQL中JOIN子句是用于把来自两个或多个表的数据连接起来,在这个过程中可能会添加一些过滤条件。昨天有小伙伴问,如下图的这两种SQL写法查询结果是否会一样?(好像这是某一年阿里的面试...

SeizeeveryDay的博客 673

sql中on和where的区别在哪

sql当中on和where

qq_43732763的博客 6104

join和where区别以及各类join的示例

1 WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接。INNER JOIN……ON子句产生的连接称为显性连接。(其他JOIN参数也是显性连接)WHERE和INNER ...

XMEHB的博客 1647

sql中on条件和where条件查询结果一样嘛?

因此,如果您在on条件中加入b.del=0,那么只有满足该条件的b表记录才会和a表记录进行连接,否则就会用null填充。而如果您在where条件中加入b.del=0,那么只有满足该条件的临时表记录才会被返回,否则就会被过滤掉。所以,您的两个查询语句的结果可能是不一样的,具体取决于b表中是否有del不等于0的记录。如果有,那么第一个查询语句会返回更多的记录,而第二个查询语句会返回更少的记录。on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。如果使用 join不会有影响。

weijx_的博客 675

数据库on和where的区别

SQL 数据库 on和where区别 条件放在on后和where后区别 hive 关联条件

feiyuxc的博客 1755

SQL笔记-on和where的区别

on和where后都表示查询条件,它们的区别如下:1、on只能用于连接查询(内连接、外连接、交叉连接),在其他情况下使用on会报错,比如: select* from test on id = 1;//报错,不能在普通查询里使用on,需要使用where 2、连接查询会产生一张中间表(临时表),on是在生成中间表时使用的条件;而where是在中间表生成后对中间表进行过滤使用的条件。比如:test1

不积跬步,无以至千里 1822

多表关联查询过滤条件写在on与where后的区别

前言: 多表关联连接方式有inner join、left join、right join、full join四种,下面通过实验来说明不同连接方式谓词放在on与where后的效果与影响。

蓝星部队的博客 3701
上一篇: pip安装详解
下一篇: sns.regplot 和 sns.distplot你知道多少
python程序员小'鹏
博客等级 码龄6年 163粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值