博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 左连接 左外连接吗_什么是左外连接?左外连接在工作表查询中的应用
阅读量:4678 次
发布时间:2019-06-09

本文共 1546 字,大约阅读时间需要 5 分钟。

大家好,我们今天接着讲连接的方式的第二种,左外连接。在上两讲中,我们讲了内连接,并用内连接分别连接数据库和EXCEL进行了实例的应用讲解,我们今日讲解第二种连接:左外联接。

所谓左外联接,是以左表为基准,将两表的数据进行连接,然后将左表没有对应项显示为NULL;换种说法:就是根据左表的记录,在被连接的右表中找出符合条件的记录与之匹配,如果找不到与左表匹配的,用null表示。

左连接特点:左外连接是外连接的一种,将显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全(在右表中没有查找到对应的值)。

为了理解上述的意义,我们还是以实例来讲解,我们今日讲解的是工作表的连接,下一讲是对数据表的讲解:

实例,同样我们仍有两页的工作表如下:

上述数据中,我们注意到在“数据”页中的型号在“数据2”中有些是没有的,有些是有的,我们要返回的是整个“数据”页中的条目,并把每行按照型号进行匹配。有的返回供应商代码,没有的即表示为空值,代码怎么去写呢?下面看我给出的代码:

Sub mynzRecords_58() '第58讲 左外联接

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Worksheets("58").Select

Cells.ClearContents

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.Recordset")

strPath = ThisWorkbook.FullName

cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';data source=" & strPath

strSQL = "Select a.型号,a.生产厂,a.数量,b.供应商 From [数据$] as a LEFT JOIN [数据2$] as b ON a.型号=b.型号"

rsADO.Open strSQL, cnADO, 1, 3

For i = 1 To rsADO.Fields.Count

Cells(1, i) = rsADO.Fields(i - 1).Name

Next

Range("a2").CopyFromRecordset rsADO

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

代码截图:

代码讲解:

1 strSQL = "Select a.型号,a.生产厂,a.数量,b.供应商 From [数据$] as a LEFT JOIN [数据2$] as b ON a.型号=b.型号"

上述代码中我们应用了Left join .. on .. 标准的左外连接的语句,(有时也写作left outer join .. on .. )解释如下:

Select a.型号,a.生产厂,a.数量,b.供应商: 表示返回的字段;

[数据$] as a LEFT JOIN [数据2$] as b: 此处定义了[数据$] 为A表, 定义[数据2$]为b表

ON a.型号=b.型号" : 是条件类型

2 Range("a2").CopyFromRecordset rsADO 这句是把数据反馈到工作表中 的固定位置。

下面我们看看代码的运行:

对于没有查找到的数值就是空值的状态了。

今日内容回向:

1 什么是左外连接?

2 左外连接的语法是什么样子的?

转载地址:http://zxfkp.baihongyu.com/

你可能感兴趣的文章
java ftp 读取excel_从Excel文件读取数据表
查看>>
oracle 有哪些字典表,oracle 常用字典表
查看>>
linux c多进程多线程,linux下的C\C++多进程多线程编程简易例子
查看>>
linux 命令 考试,linux常用命令总结-第一次考试
查看>>
linux动态库编译多重依赖,Linux动态库多重依赖
查看>>
linux网卡缓冲区设置,【Linux】tcp缓冲区大小的默认值、最大值
查看>>
opus编译linux,Linux 下源码编译FFMEG
查看>>
linux 运行real basic,REALbasic 快速入门.pdf
查看>>
linux启动tomcat不停的触发gc,tomcat启动时就频繁gc和full gc
查看>>
linux uart串口驱动,X-017-KERNEL-串口驱动开发之uart driver框架
查看>>
linux 添加串口数量,如何在Linux中添加4个以上的串口设备?
查看>>
关于sqoop导入数据的时候添加--split-by配置项对sqoop的导入速度的影响。
查看>>
nginx配置
查看>>
2014-11-9------- 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。...
查看>>
python 魔法方法补充(__setattr__,__getattr__,__getattribute__)
查看>>
NOIP 2010 关押罪犯
查看>>
CentOS7.5删除旧的内核
查看>>
Java常用的非受检异常
查看>>
HDOJ-2054
查看>>
centos7安装eclipse
查看>>