暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

VBA SQL 外连接查询

Excel VBA练习 2021-07-15
1166

前面几天写了几种连接查询

VBA SQL 内连接查询(一)

VBA SQL 交叉连接查询

VBA SQL 内连接查询

VBA SQL 跨工作簿查询

突然发现一开始的标题写错了...改天没写文章的时候要换个标题才行...

写了几天的连接查询,今天到外连接了,也是在SQL中比较常用的语法之一~

在SQL IN EXCEL 里只有左连接和右连接两种,只需要搞明白一种即可...

为什么?

往下看↓


先看左连接的语法

    From Table1 Left Join Table2 On Table1.Field Comp Table2.Field

    是不是感觉和内连接查询一样...

    只是把 INNER JOIN 换成了 LEFT JOIN 就成了左连接,而右连接则是 RIGHT JOIN

    ...

    INNER(内)

    LEFT(左)

    RIGHT(右)

    ...

    相当的好记,我们来看下这几个有啥区分


    左连接

    如下图所示,还是拿内连接的例子来弄...



    如果使用之前的内连接查询会返回一下结果

      strSQL = "Select 学员ID,姓名,性别,课程名称 From " & strSource & "a Inner Join " & strSource1 & "b on a.课程ID=b.课程ID"



      结果明显少了学员,这并非我们想要的结果,我们需要找到就匹配,找不到就空着...,也就是不管找不找得到都返回左边(学员表)所有的记录


        strSQL = "Select 学员ID,姓名,性别,课程名称 From " & strSource & "a Left Join " & strSource1 & "b on a.课程ID=b.课程ID"


        语句中,只需要吧INNER 更改为 LEFT ...


        右连接

        和左连接一样



          strSQL = "Select a.学员ID,姓名,性别,语文,数学 From " & strSource & "a Right Join " & strSource1 & "b on a.学员ID=b.学员ID"


          从上述中可以发现如果使用左连接就返回左边所有记录行,而使用右连接则返回右边所有的记录行


          之前说外连接只有左连接和右连接

          其实也可以全外连接,,用UNION 变通下即可


          外连接



                strSQL = "Select 学员ID,姓名,性别,课程名称 From " & strSource & "a Left Join " & strSource1 & "b on a.课程ID=b.课程ID"
            strSQL = strSQL & " Union "
            strSQL = strSQL & "Select 学员ID,姓名,性别,课程名称 From " & strSource & "a Right Join " & strSource1 & "b on a.课程ID=b.课程ID "



            这里使用了UNION运算符合并了2个查询结果...


            示例文件下载

            链接:https://pan.baidu.com/s/1KdbdzNchV7Jh014ExlIHjA

            提取码:abcd


            收工!

            如果小伙伴有好的思路,可以在小编的公众号留言发给小编研究下

            文章觉得有用,点个赞+在看,你的每一次点赞和转发就是小编原创的动力

            关注公众号 ↓


            文章转载自Excel VBA练习,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论