mysql left join查询,比较两个表不同的行

怎样查询两个表中同一字段的不同数据值

例如:

A表中的字段a有40000条数据
B
表中的字段a有60000条数据,其中的40000条数据跟A表是一样的
怎样能把那不一样的20000条数据查询出来啊?

 

--建表table1,table2:   
create   table   table1(id   int,name   varchar(10));  
create   table   table2(id   int,score   int);  
insert   into   table1   select   '1','lee';
insert   into   table1   select   '2','zhang';
insert   into   table1   select   '3','steve';
insert   into   table1   select   '4','wang';  
insert   into   table2   select   '1','90';  
insert   into   table2   select   '2','100';  
insert   into   table2   select   '3','70';  

如表
-------------------------------------------------  
table1   
-------------------------------------------------  
id name 
1 lee
2 zhang

3 steve
4 wang

-------------------------------------------------  

table2

------------------------------------------------- 

id score
1 90
2 100

3 70

------------------------------------------------- 

 

(1)左向外联接的结果集包括   left   outer   子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null)。  

(2)sql语句  

select * from table1 t1 left join table2 t2 on t1.id = t2.id

-------------结果-------------  
id name id score  
------------------------------  
1 lee 1 90  
2 zhang 2 100  

3 steve 3 70
4 wang null null  
------------------------------  

注释:包含table1的所有子句,根据指定条件返回table2相应的字段,不符合的以null显示

(3)那么获取差值

select * from table1 t1 left join table2 t2 on t1.id = t2.id WHERE t2.id is null

-------------结果-------------  
id name id score  

4 wang null null  
------------------------------  

 

下面是工作中实际遇到的情况:

##过滤出0销售人员(即没有销售记录的员工信息列表)。

#销售人员(用户角色中间表)

select userid from bbscs_role_user where roleid = 'sales'

 # ---> 11条记录

 

#统计表(用户销售记录表)

select refid from bbscs_sales_income_stat where type = 4 and month = '2012-02' and amount != 0

 # ---> 4条记录

要求为:另外7个销售人员的记录列出来为目的。

 

##########这个是SQL语句模型 BEGIN##########

select * from b t2 left join a t1 on t1.a1 = t2.b1 WHERE t1.a1 is null

#########这个是SQL语句模型 END############

说明:左表是数据多的那个表(基准表如b表)。left join查询。where条件是右边的那个表(a表)某个字段(a1)为Null作为(判断字段)

 

##将SQL返回结果作为临时表来查询

select * from (select userid from bbscs_role_user where roleid = 'sales') t2 left join (select refid from bbscs_sales_income_stat where type = 4 and month = '2012-02' and amount != 0) t1 on t2.userid = t1.refid WHERE t1.refid is null

 # --->7条记录

 

 

测试一:

##SQL语句,mysql 查询两个表中不同的值(主要是差值)  这个语句查询还是存在问题。

select t1.Userid from bbscs_role_user t1 left join bbscs_sales_income_stat t2 on t1.userid = t2.refid and t1.roleid = 'sales' and t2.type = 4 and t2.month = '2012-02' and t2.amount != 0 where t2.id is null; ##表与表,条件与条件独立出来。

 # --->18条记录

 

 

测试二:

select t1.Userid from bbscs_role_user t1 left join bbscs_sales_income_stat t2 on t1.userid = t2.refid and t1.roleid = 'sales' and t2.type = 4 and t2.month = '2012-02' and t2.amount != 0 and t2.id is null ##where or and 区别

 # --->22条记录

 

 

###更为强大的临时表查询功能,将以上查询结果作为一个整体放入。

##跟用户部门中间表关联,按部门id排序显示。

select t4.userid from( select * from (select userid from bbscs_role_user where roleid = 'sales') t2 left join (select refid from bbscs_sales_income_stat where type = 4 and month = '2012-02' and amount != 0) t1 on t2.userid = t1.refid WHERE t1.refid is null ) t3, bbscs_org_user t4 where t3.userid = t4.userid order by orgId

 

【MySQL】提高篇—复杂查询:多表连接(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN) INNER JOIN:只返回两个表中匹配的记录。LEFT JOIN:返回左表的所有记录及右表中匹配的记录。RIGHT JOIN:返回右表的所有记录及左表中匹配的记录。FULL JOIN:返回两个表中的所有记录(通过 UNION 实现)。这些连接操作在实际应用中非常重要,能够帮助我们从多个表中提取和组合数据,以满足复杂的查询需求。 阅读详情

相关推荐

MySQL left join 查询巨慢 优化

MySQL left join 查询巨慢 优化前景提要功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表 前景提要 最近工作中遇到一个非常奇怪的问题,mysql中有两张表,test_info和test_do_info需要进行LEFT JOIN关联查询,每张表又都1W+的数据,关联查询需要12s之久。 按照常理来说1W+的数据关联查询应该很快,即使进行全表扫描也不至于

寂寞的搬运工的博客 1万+

MySQL Left Join使用注意事项

在我们使用MySQL进行联表查询的时候,经常使用Left Join的方式。如果两张表的关联条件是唯一对应的,那么自然没问题。 用户: 组织: 联表查询结果: 当有多个组织的时候,问题就出现了: 联表查询结果: 出现了两个相同的结果。其实我们的本意是查询用户,顺便将用户所属的组织带出来,这样用户列表中查询出来的数据就会多处一些不是我们想要的数据了,查询返回的数据是有问题的。 我们来看看Left Join的特性: 左表中的记录数是它将返回的最小记录数。如果右表中有两条记录与左表中的一条记录匹配,它将返

stepMore的博客 865

MySQL 什么时候使用INNER JOIN 或 LEFT JOIN

在本科时期,其实这个问题困扰了我很久,最早都是用如下语句,也就是笛卡尔积的形式。 select ** from A,B where A.name=B.name 再熟悉了各种联表以后其实这就是cross join,是最慢的一种联表方式,会返回A表字段的数据*B表字段的数据(如果A表有10条数据,B表有20条数据,那么最后返回结果就是200条)。 其实可以根据真实的需求用更好的联表操作,如left join 或inner join。 红烧排骨饭博客中给出的例子很容易理解 商品表 CREATE TABLE pr

qq_39751320的博客 3220

mysql left join之后的行数有可能与左表的行数不同

首先,谈一下left join时,放在 on 后面的条件与放在 where 后面的条件有什么不同: on是在生成连接表的起作用,where是生成连接表之后对连接表再进行过滤: 当使用left join时,无论on的条件是否满足,都会返回左表的所有记录,对于满足的条件的记录,两个表对应的记录会连接起来,对于不满足条件的记录,那右表字段全部是null; 当使用right join时,类似,只不...

xiaokanfuchen86的博客 2476

【后端百科】mysql的join,left join,right join,full join分别是什么意思

在MySQL数据库中,JOIN操作是一种强大的工具,用于将两个或多个表中的数据进行组合,以满足复杂的查询需求。本文将详细介绍MySQL中的四种主要JOIN类型:INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN(虽然MySQL不直接支持FULL OUTER JOIN,但可以通过其他方式实现类似效果),并对它们进行对比分析。MySQL提供了多种类型的JOIN操作,每种JOIN都有其特定的用途和语法。在实际应用中,应根据具体需求选择合适的JOIN类型。

ThisIsClark 1535

不用买机械臂!用Python+ROS仿真实现RGB-D物体抓取全流程(Gazebo/MoveIt教程)

本文详细介绍了如何利用Python和ROS仿真环境(Gazebo/MoveIt)实现RGB-D物体抓取全流程,无需购买昂贵机械臂硬件。从环境搭建、机械臂模型导入、深度视觉系统配置到MoveIt运动规划,提供完整的实战指南,特别适合个人开发者和学生团队进行机械臂抓取算法验证与开发。

weixin_29061041的博客 340

mysql之比较两个表的数据

要比较两个结构相同的表中的某条数据是否完全一样,您可以使用JOIN语句或者EXISTS关键字来对比这两个表中相应的行。

少说,多做。 1万+

立创开源桌面激光雕刻机DIY全解析:从悬臂结构、Arduino主控到Marlin固件

本文详细解析了基于立创开源平台的桌面激光雕刻机DIY全过程。重点介绍了悬臂式机械结构的设计与优化,阐述了采用Arduino Mega 2560主控与RAMPS 1.4扩展板的经典控制方案,并深入讲解了Marlin固件的关键配置步骤,包括电机步数计算与激光功能启用,为创客和电子爱好者提供了一套完整的从硬件搭建到软件调试的实战指南。

weixin_42510201的博客 386

mysql两张表找不同行_mysql left join查询,比较两个表不同的行

怎样查询两个表中同一字段的不同数据值例如:A表中的字段a有40000条数据B表中的字段a有60000条数据,其中的40000条数据跟A表是一样的怎样能把那不一样的20000条数据查询出来啊?--建表table1,table2:create table table1(id int,name varchar(10));create table table2(id int,s...

weixin_36040020的博客 779

GAMES101:MacOS作业环境搭建

查看gcc/clang的位置产看gcc/clang的版本1.1.2 安装cmake。

weixin_38844255的博客 716

Linux云服务器上搭建《僵尸毁灭工程》私服全流程指南(避坑版)

本文详细介绍了在Linux云服务器上搭建《僵尸毁灭工程》私服的全流程指南,包括环境准备、SteamCMD安装、游戏服务器部署、内存优化配置及高级调优技巧。特别针对常见问题提供解决方案,帮助玩家快速搭建稳定的私服环境。

solidity8miner的博客 602

Mysql中俩张大数据量的表进行数据对比如何对比

大数据相关视频讲解:013为什么说未来系统是linux在日常开发中,经常会遇到需要对比MySQL中俩张大数据量的表数据的情况。在这种情况下,我们需要一种高效的对比方法来找出表中的数据差异,以便做出相应的处理。下面将介绍一种基于SQL语句的对比方法,并通过示例演示如何实现。 问题描述 假设我们有俩张表,分别是table1和...

weixin_36425412的博客 616

SAP ABAP Append structure 介绍

所有在 append structure 上增强的字段都是 append structure 的一部分,这意味着对这些增强所做的任何更改仅仅施加在 append structure 上,而不会影响被增强的 ABAP DDIC 结构。这同样适用于 transport. 激活数据库表或结构时,会找到所有关联的 append structure,并将它们的组件附加到数据库表或结构。Append structure(附加结构)是 ABAP 字典中附加到另一个结构或数据库表并将其组件附加到它们的结构。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1165

mysql写存储查看两张表格不同_mysql left join查询,比较两个表不同的行

怎样查询两个表中同一字段的不同数据值例如:A表中的字段a有40000条数据B表中的字段a有60000条数据,其中的40000条数据跟A表是一样的怎样能把那不一样的20000条数据查询出来啊?--建表table1,table2:create table table1(id int,name varchar(10));create table table2(id int,s...

weixin_31043555的博客 185

windows server 2012安装升级MySQL

本篇文章主要介绍的是windows server 2012 R2操作系统安装升级以及过程中遇到的问题和对应的解决方法。(数据库低版本为:mysql-5.7.27-winx64;数据库数据库高版本为:mysql-5.7.44-winx64;提示:以下是本篇文章正文内容,下面案例可供参考。

qq_42776231的博客 780

群无人机航迹规划-虚拟管道

图源北理工全权老师团队虚拟管道相关论文,文字为个人理解,以ppt形式分享报告。

coldmood77的博客 669

⭐️【MySQL入门·连接查询】12.2 LEFT JOIN

LEFT JOIN是MySQL中一种强大的查询工具,它允许我们根据指定的条件将两个或多个表的数据结合起来。通过理解其工作原理、优化查询性能以及与其他连接类型的结合使用,我们可以更高效地利用LEFT JOIN来构建复杂而强大的查询。无论是处理关系型数据库还是进行数据分析和报表生成,LEFT JOIN都是一个不可或缺的工具。通过不断实践和探索,我们可以更好地掌握LEFT JOIN的用法,并在实际项目中发挥其最大的价值。👨‍💻博主Python老吕评论,您的举手之劳将对我提供了无限的写作动力!🤞🔥。

Python老吕的博客 1万+

Python爬虫实战:利用最新技术爬取微信公众号文章(基于搜狗搜索)

使用最新Python版本确保兼容性和性能:比传统Requests更强大的HTML解析库Playwright:新一代浏览器自动化工具,比Selenium更高效Asyncio:异步IO框架提升爬虫效率Redis:分布式任务队列和去重MongoDB:非关系型数据库存储结构化数据本文详细介绍了如何利用Python最新技术栈构建一个功能强大的微信公众号文章爬虫。通过结合Playwright浏览器自动化、异步IO、分布式任务队列等技术,我们实现了一个能够绕过反爬机制、高效稳定抓取数据的解决方案。

2201_76125261的博客 1796

MySQL多表连接的奥秘:INNER JOIN与LEFT JOIN深度解析与应用指南

对比维度INNER JOINLEFT JOIN语法关键词INNER JOINLEFT JOIN 或 LEFT OUTER JOIN返回结果仅匹配行左表全部行 + 匹配的右表行(无匹配则NULL)性能特点通常更高效,适合索引优化可能较慢,尤其右表无索引时适用场景精确数据匹配、排除不完整记录保留主表数据、处理缺失值、完整性检查在实际开发中,正确选择连接类型不仅能提升查询效率,还能确保业务逻辑的准确性。

zuiyuelong的博客 1458

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

无涯教程-MySQL - Left Join vs Right Join

MySQL主要有两种联接,分别是LEFT JOIN和RIGHT JOIN。这些联接之间的主要区别是包含不匹配的行。LEFT JOIN包括左侧的所有记录和右侧表的匹配行,而RIGHT JOIN返回右侧的所有行和左侧表的不匹配行。在本节中,将了解LEFT和RIGHT连接之间的流行区别。在探索比较之前,让无涯教程首先了解MySQL中的JOIN,LEFT JOIN和RIGHT JOIN子句。

无涯教程 1126

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

left join 和子查询效率_Mysql 多表联合查询效率分析及优化

1. 多表连接类型1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用',' 如: SELECT * FROM table1 CROSS JOIN table2 SELECT * FROM table1 JOIN table2 SELECT * FROM table1,table21 由于其返回的结果为被连接的两个数据表的乘积,因此当有WHER...

weixin_39611769的博客 6453

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

从EXPLAIN看MySQL JOIN优化:为什么你的LEFT JOIN比INNER JOIN还慢?

本文深入探讨MySQL中LEFT JOIN比INNER JOIN慢的原因,重点分析驱动表选择机制及JOIN算法差异。通过EXPLAIN执行计划解析,揭示索引、WHERE条件和统计信息如何影响优化器决策,并提供实用的索引优化、参数调优和查询重写策略,帮助开发者解决实际性能问题。

868

MYSQL在不同的查询条件下 LEFT JOIN的执行步骤探究

前言 在实际业务之中,我们经常会遇见双表查询的问题。如何更加优雅,以及更加快的拿到我们所想要的数据。这便是我们经常所会遇见的问题。 最简单解决问题的方式,便是我们要得到一份详细的数据,来知道MYSQL对于这条SQL是如何解析的,每一句扫描了多少行,返回了多少数据。但是MYSQL似乎并没有给出这个问题的答案。因此想要知道如何,就只能依靠工程师们自己的经验。 下面,我们就根据一个实际并且简单的也无需求来谈论这个问题。 知道LEFT JOIN 在不同的查询条件下执行步骤 基础问题 假设我们在做一个简单的快递项目。

ArroGance_X的博客 2569

MySQL:LEFT JOIN 的驱动表选择,你真的了解吗?

本文深入探讨了MySQL中LEFT JOIN的驱动表选择机制,打破了“左表永远是驱动表”的常识。通过分析优化器的成本计算逻辑,揭示了ON与WHERE子句对连接语义和性能的关键影响,并结合执行计划解析了Index Nested-Loop Join等连接算法。掌握这些原理,有助于开发者编写高性能SQL并有效进行查询优化。

zz67890的博客 737

left join on多表关联_2周零基础搞定SQL——多表查询

在上一篇文章里,我们学习了SQL的复杂查询,但是依然只是针对一个表的,但在实际工作中,我们需要的数据,往往分布在多个表中,所以为了更好的解决工作中的实际问题,今天我们一起来学习如何用SQL进行多表查询吧!1.表的加法在之前的学习中,我们建了一张表course,大家还记得吗?接下来我们再数据库中再添加一张表course1,如下:如果大家忘记了如何新建表并向表中插入数据,就回到何书365:轻松搞定数据...

weixin_39540315的博客 7368
上一篇: Hibernate入门级添删改查核心代码
下一篇: Hibernate count如何映射?HQL别名字段问题?
全新时代
博客等级 码龄19年 3粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值