join on 用法

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

A left join B 的连接的记录数与A表的记录数同
A right join B 的连接的记录数与B表的记录数同
A left join B 等价B right join A


table A:
Field_K, Field_A
1 a
3 b
4 c
table B:
Field_K, Field_B
1 x
2 y
4 z
select a.Field_K, a.Field_A, b.Field_K, b.Field_B from a left join b on a.Field_K=b.Field_K

Field_K Field_A Field_K Field_B
---------- ---------- ---------- ----------
1 a 1 x
3 b NULL NULL
4 c 4 z

也就是说left join 则连接左边表中所有记录都会出现,如果根据连接条件在table2中找不到相关记录,则显示为null。
right join 则显示右边表中的全部记录。inner join 则只有符合条件的记录才会出现在结果集中。
 

EG2∶有两表a和b,前两字段完全相同:(id int,name varchar(10)...)
id name
----------- ----------
1 a
2 b
3 c




以下的查询语句,你知道它的运行结果吗?:
1.
select * from a left join b on a.id=b.id where a.id=1


2.
select * from a left join b on a.id=b.id and a.id=1


3.
select * from a left join b on a.id=b.id and b.id=1


4.
select * from a left join b on a.id=1




结果:
id name id name
----------- ----------- ----------- -----------
1 10 1 10

(1 row(s) affected)

id name id name
----------- ----------- ----------- -----------
1 10 1 10
2 20 NULL NULL
3 30 NULL NULL

(3 row(s) affected)

id name id name
----------- ----------- ----------- -----------
1 10 1 10
2 20 NULL NULL
3 30 NULL NULL

(3 row(s) affected)

id name id name
----------- ----------- ----------- -----------
1 10 1 10
1 10 2 20
1 10 3 30
2 20 NULL NULL
3 30 NULL NULL

(5 row(s) affected)




思路:
left join , 无非是左边表为基础, 扫描右边表匹配的记录

先是左边表的第1条记录
1 a
按条件 a.id=1, 来扫描右边表的记录
对于右边表的每条记录, 显然 a.id=1 这个条件都是成立的, 所以第1条记录匹配后的结果是:

1 a 1 a
1 a 2 b
1 a 3 c

---------------------------------------------
然后再扫描第2条记录
2 b
对于条件 a.id=1, 在边表中没有与之匹配的记录, 所以右边表为NULL
因此第2条记录匹配的结果为
2 b NULL NULL

----------------------------------------------
第3条记录与第2条记录一样, 匹配的结果是
3 c NULL NULL

---------------------------------------
因此最终结果是5条记录
1 a 1 a
1 a 2 b
1 a 3 c
2 b null null
3 c null null




内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。
内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students 和 courses 表中学生标识号相同的所有行。

外联接,外联接可以是左向外联接、右向外联接或完整外部联接。


在 FROM 子句中指定外联接时,可以由下列几组关键字中的一组指定:

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

RIGHT JOIN 或 RIGHT OUTER JOIN。
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

FULL JOIN 或 FULL OUTER JOIN。
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

交叉联接。
交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。

Cadence IC617仿真实践:有源电流镜的共模抑制比优化策略 本文基于Cadence IC617平台,详细介绍了有源电流镜共模抑制比(CMRR)的仿真与优化全流程。从电路搭建、DC工作点分析到AC仿真获取差模/共模增益,逐步解析CMRR计算方法。核心优化策略包括提升电流镜输出阻抗、优化差分对匹配性及调整晶体管尺寸,并探讨了与电源抑制比(PSRR)的权衡,为模拟集成电路设计提供实用指南。 阅读详情

相关推荐

手把手教你学Simulink实例:基于Simulink的锂电池管理系统(BMS)仿真

是确保锂电池安全、高效运行的关键组件。BMS 主要功能包括监控电池的状态(如电压、电流、温度)、估算荷电状态(State of Charge, SOC)、健康状态(State of Health, SOH),以及实现电池均衡和保护机制等。Simulink 提供了一个强大的仿真环境,可以用来设计、分析和验证锂电池管理系统的控制策略。常见的均衡方法包括被动均衡(通过电阻放电)和主动均衡(通过开关电容或变压器)。通过本教程,我们详细介绍了如何使用 Simulink 进行锂电池管理系统的仿真实例。

MHD0815的博客 519

left join 小问题

http://hi.baidu.com/kinomn/item/1d53c5ddcd2bb715e1f46f20 有这么2个表: ------------------------------------------------- a | b | ------------------------------------------------- id name |id f...

afa的专栏 245

【WLAN】【调试】如何使用Wireshark分析加密的WiFi数据包

- 当配置网卡为monitor 模式的情况下,可以使用 wireshark来抓取空口报文; - 如果WiFi采用非Open加密方式,则从报文中仅能分析到 802.11协议层,更底层(如DHCP、ICMP、TCP等)被加密,此时可以使用 wireshark 来完成解密。 - 解密之后,可以通过icmp、tcp等关键词过滤报文。

一介草民,只为生活。 2936

(四)sql多表连接查询join on用法

(四)sql多表连接查询join on用法

qq_43070500的博客 4万+

SQL:JOIN ON

JOIN连接组合两个表中的字段记录,包括三种: INNER JOIN运算式:连接组合两个表中的字段记录。 LEFT JOIN运算式:连接组合两个表中的字段记录,并将包含了LEFT JOIN左边表中的全部记录。 RIGHT JOIN运算式:连接组合两个表中的字段记录,并将包含了RIGHT JOIN右边表中的全部记录。 INNER JOIN设定两个表相关连的运算式,以连接组合两个表中的字段记...

weixin_33912638的博客 5272

SQL数据库常用操作:多表联查(JOIN...ON语句的使用)

最后一行表示:id为7的用户的常用信息为使用的设备id为4321,性别为男,年龄26岁,复旦大学,gpa为3.6在过去的30天里面活跃了9天,发帖数量为6,回答数量为52。第一行表示:id为1的用户的常用信息为使用的设备id为2138,性别为男,年龄21岁,北京大学,gpa为3.4在过去的30天里面活跃了7天,发帖数量为2,回答数量为12。INSERT INTO user_profile VALUES(1,2138,'male',21,'北京大学',3.4,7,2,12);外连接(OUTER)说明。

qq_69747883的博客 2913

sql语法:inner join on, left join on, right join on详细使用方法

inner join(等值连接) 只返回两个表中联结字段相等的行 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 INNER JOIN 语法: INNER JOIN 连接两个数据表的用法: SELECT * FROM 表1 INNER JOIN 表2 ON...

'水' 库 24万+

left join on用法 inner join on用法 right join on用法

left join on用法 inner join on用法 right join on用法 示例:t1表 t2表 left join on用法 1. SELECT * FROM t1 left join t2 on t1.id=t2.t1_id 思考:在on后面加筛选条件和在where后面加筛选条件有什么区别呢? 如果在on后面加上筛选条件,再看一下查询结果:-结果...

Lisa_Lisa的博客 2487

MySQL中的join以及on条件的用法

MySQL中join用法join具有连接的作用,即当两个或者两个以上的表有关系时,需要用join来连接这些相关的表,来处理或分析数据: join用法:连接 举例先看看,就懂了: 例如: 有一个表叫做stu,一个表叫class,stu join class会生成一个新的表, 我们执行: stu join class 后,新的表成为: 通过上面的例子总结一下: join后的列名是两个表列...

还没想好的博客 5万+

join on用法

建一个测试表A和B并给表里插入数据,如下图所示: 1.join on用法,返回两张表中相等的数据 select * from testa join testb on aid=bid 结果: 与join on 执行结果一致的是select * from testa where aid in(select bid from testb  ) 也与select * from t...

Forever_0528_0126的博客 1万+

join on多表的用法_【自学】【SQL】拜师Derek Steer SQL 进阶连接join ·

终于摆脱了低级也不趣味的基本语法啦!!!接下来是关键的连接趴回顾表格结构:PK--primary key 主要的字段。每个表中应该都有这么一个主变量,而且每一行都是唯一确定值。一般位于每个表的第一行。UK--unique key 唯一条件字段。DK--default key 默认设定字段。CK--check key 检查字段(限制条件)。FK--foreign key 外键关联到reference...

weixin_34380085的博客 1289

SQL中where与on的区别 && Join用法

where和on的区别 + 实际例题(求上海供应商零件名称),如有错误烦请指正!

qq_72379854的博客 567

sql的 join on用法

inner join 连接两个表的用法:现有两个表结构如下文章表 newsnewsid 文章IDclassid 文章分类IDnewstitle 文章标题...文章分类表 classclassid 分类IDclassname 分类名称使用inner join取文章标题和分类名称sql语句$sql = "select news.newstitle,class.classname from news

qaz13177_58_的专栏 6081

left join的基本用法以及on与where的区别

文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 我们在写sql语句的时候,,比如内连接、外连接。以本文的left join为例,网上都是这么说的:LEFT JOIN 关键字会从左表 那里返回所有的行,即使在右表中没有匹配的行。 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd impor

qq_250161537 5万+

INNER JOIN ON 用法

单击工具栏上的“执行”按钮,我们看到这时显示的数据表和刚才显示的用LEFT JOIN 的数据表一样。现在看出来了吧,原来它们的功能是可以互换的。    如果想将几个表联接起来,在JOIN操作中我们可以进行嵌套操作,有三个表:表1、表2、表3,现在将三个表联接起来:

露露专栏 2294

join on用法

SQL 的join on用法

txdtjpu的专栏 1021

left join on where and 的所有用法

1.首先建立三张表 表a 表b 表c 首先看一个sql SELECT * FROM a LEFT JOIN b ON a.id = b.id LEFT JOIN c ON b.id =c.id 这个sql的结果如下 1.会显示a的所有信息 2.这个on 是对leftjoin的表的右侧的数据做了限制 , 比如你不满足这个on后面的条件 我就只显示null 比如我这里 b表就被做了限制, 只会显示和a表一样的 3.下一个on 又是对c表做了限制, 是b对c做的限制, 但是 其实b是有5的 而c也有, c

weixin_44583491的博客 1555

关于SQL Server中left join on and 用法的介绍

一般情况下,SQL语句的执行顺序如下所示: (1)from (2)on (3)join (4)where (5)group by (6)having (7)select (8)distinct (9)union (10)order by 从SQL语句执行顺序的这个角度,我们可以很好的理解left join on and的用法。 以SQL Server为例,先创建两个测...

Backcanhave7 1万+

sql server---join onleft join 、right join用法

Join用途:当你要从两个或者以上的表中选取结果集时,你就会用到JOIN。例:“Employees”表中的数据如下,(其中ID为主键):ID                  Name01              Hansen, Ola02                Svendson, Tove03               Svendson, Stephen04             

1859

INNER JOIN ... ON用法

INNER JOIN ……ON的语法格式: FROM (((表1 INNER JOIN 表2 ON1.字段号=表2.字段号) INNER JOIN 表3 ON1.字段号=表3.字段号)  INNER JOIN 表4 ON Member.字段号=表4.字段号) INNER JOIN 表X ON Member.字段号=表X.字段号 连接两个数据表语法格式:     FROM 表1 IN

Fickle.的博客 2万+
上一篇: 如何写出高效优美的C语言代码
下一篇: ORACLE常用傻瓜问题1000问
switchyiyi
博客等级 码龄19年 11粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值