欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > VBA学习(43):利用VBA+SQL查询Excel工作表数据(多表查询)

VBA学习(43):利用VBA+SQL查询Excel工作表数据(多表查询)

2025/5/22 13:57:23 来源:https://blog.csdn.net/nianfen/article/details/141276430  浏览:    关键词:VBA学习(43):利用VBA+SQL查询Excel工作表数据(多表查询)

作为【VBA+SQL查询Excel工作表数据】系列的终篇,本文将继续使用VBA+SQL查询的模板,并详细介绍如何在VBA中使用SQL多表查询语句。由于多表查询的SQL语句相对复杂,建议在熟练掌握前4篇的案例之后,再学习多表查询的SQL语句。

图片

[VBA+SQL查询的模板]

图片

[工资表$A3:M65536] 

图片

[员工花名册$A1:I65536]

SQL多表查询

以下SQL多表查询语句,只要将代码第7行的sql语句替换即可。

1.隐式内连接(通过where关键字)

sql = "select 工资表.工号,工资表.姓名,部门,实发金额 from [工资表$A3:M65536] as gzb,[员工花名册$A1:I65536] as yghmc where gzb.工号=yghmc.工号"

2.显式内连接(inner join)

sql = "select 部门,avg(基础工资) as 平均工资 from [工资表$A3:M65536] gzb inner join [员工花名册$A1:M65536] yghmc on gzb.工号=yghmc.工号 group by 部门 having avg(基础工资)<2000"

3.左连接(left join)

sql = "select * from [工资表$A3:M65536] gzb left join [员工花名册$A1:I65536] yghmc on gzb.工号=yghmc.工号"

4.右连接(right join)

sql = "select * from [工资表$A3:M65536] gzb right join [员工花名册$A1:I65536] yghmc on gzb.工号=yghmc.工号"

左连接vs右连接:左连接,将左表作为基础表,并列出左表所有的查询信息,而右表只列出ON条件下与左表匹配的查询信息;右连接的原理,亦相同。

5.全连接(full outer join)

注:★SQL语句操作Excel工作表数据,不支持全连接!★

6.自连接

例:查询英文名重复的员工信息

sql = "select t1.姓名,t1.英文名 from [员工花名册$A1:I65536] t1 inner join [员工花名册$A1:I65536] t2 on t1.英文名=t2.英文名 where t1.工号<>t2.工号 "

7.嵌套连接

例:查询年龄>平均年龄的员工信息

sql = "select 姓名,部门,出生日期 from [员工花名册$A1:I65536] where year(now)-year(出生日期)>(select avg(year(now)-year(出生日期)) as 年龄 from [员工花名册$A1:I65536])"

8.union all和union

例:查询年龄最大的五位员工信息以及年龄最小的五位员工信息

sql = "select top 5 * from [员工花名册$A1:I65536] order by 出生日期 union all select top 5 * from [员工花名册$A1:I65536] order by 出生日期 desc "

注:union all连接全部记录,union去除重复记录。

技术交流,软件开发,欢迎微信沟通:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词