sql 判断记录是否存在_判断两个工作表中相同记录的SQL语句写法

大家好,今日继续VBA数据库解决方案的讲解,今日讲解的是第47讲,内容是:在两个工作表提取数据记录,并显示相同记录的报告。

我们在工作中经常会遇到这样的情况,要分析两个工作表,知道哪些记录是重复的,如果不用ADO解决,只用EXCEL来解决,该怎么处理呢?那就只能是用数据透视表来一个一个的比对了。但有了ADO,我们可以瞬间解决。

实例:我们的两个工作表如下:

5aa824e8d1950cea81778fe95fe3d340.png

在数据备份和数据两个工作表中存在很多重复的数据,我们要把这些数据提取出来。

下面看我我给出的代码:

Sub mynzRecords_47() '第47讲 打开两个工作表提取数据记录,显示数据相同的记录报告

Dim cnADO, rsADO As Object

Dim strSQL As String

Set cnADO = CreateObject("ADODB.Connection")

Worksheets("47").Select

strPath = ThisWorkbook.FullName

Set rsADO = CreateObject("ADODB.Recordset")

cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & strPath

strSQL = "SELECT A.* FROM [数据备份$] A,[数据$] B " _

& "WHERE A.型号=B.型号"

Set rsADO = cnADO.Execute(strSQL)

Cells.ClearContents

Range("A1") = "【数据备份】工作表与【数据】工作表型号相同的记录"

For i = 0 To rsADO.Fields.Count - 1

Cells(2, i + 1) = rsADO.Fields(i).Name

Next i

Range("A3").CopyFromRecordset rsADO

rsADO.Close

cnADO.Close

Set cnADO = Nothing

Set rsADO = Nothing

End Sub

代码截图:

901e40c726f67e0ec8d9bdecd14ed89f.png

代码解析:

1 strSQL = "SELECT A.* FROM [数据备份$] A,[数据$] B " _

& "WHERE A.型号=B.型号"

上面的这句SQL语句就是提取两个工作表中数据相同的记录。

注意写法:SELECT A.* FROM [数据备份$] A,[数据$] B "& "WHERE A.型号=B.型号"

提取的是A工作表的字段,工作表是FROM: [数据备份$] A和[数据$] B,条件是:A.型号=B.型号。

2 Set rsADO = cnADO.Execute(strSQL) 执行SQL语句

3 Cells.ClearContents

Range("A1") = "【数据备份】工作表与【数据】工作表型号相同的记录"

计入表的抬头

4 For i = 0 To rsADO.Fields.Count - 1

Cells(2, i + 1) = rsADO.Fields(i).Name

Next i

计入数据的字段

5 Range("A3").CopyFromRecordset rsADO

在工作表中计入得到的记录集。

下面我们看代码的运行:

8dc3e19fe8c76791e9e0f645139e25df.png

好了,这样就实现了我们的目的,是不是非常的方便呢。工作中总会有各种实际情况发生,我们要具体问题,具体分析,我也力争把最经典的使用方案提供给读者。

今日内容回向:

1 两个工作表中相同记录的判断的SQL语句如何写?

2 上面的代码还可以用什么方案实现?

3 如果判断的不是某个记录,而是所有的字段呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值