Excel VBA+SQL 多表应用-UNION ALL

UNION ALL

SQL语句的限制

1.SQL查询连接的表上限50个(最多50个表)

2.查询语句字符限制38596个字符(不超过38596个)

超过了会出现如下二个错误提示类型之一:

1.“查询过于复杂"

2."获取表格数据时发生错误"。

源数据:

Excel VBA+SQL 多表应用-UNION ALL

二表连接:

Sql = "SELECT 日期,姓名,产量 FROM [表1$] union all SELECT 日期,姓名,产量 FROM [表2$]"

结果就不展示了,大家可以自己练习:

多表连接目标如下:

Excel VBA+SQL 多表应用-UNION ALL

代码运行结果如下:

Excel VBA+SQL 多表应用-UNION ALL

代码如下:

Excel VBA+SQL 多表应用-UNION ALL

注意事项:

 '
 Sql1 = "SELECT 日期,姓名,产量 "
 
 For Each Sht In Worksheets
 Sht_name = Sht.Name
 If Sht_name <> ActiveSheet.Name Then
 Sql = Sql & Sql1 & "FROM [" & Sht_name & "$] UNION ALL "
 End If
 Next
 Sql = Left(Sql, Len(Sql) - 11)

多表查询的时候,没有直接像二表查询的时候,直接使用UNION ALL来连接工作表,而是采用了循环的方式来生成SQL的额语句。

Sql = Left(Sql, Len(Sql) - 11) 这一句,大家可以想一想为什么?

小提示:

如果没有这一句:

Sql ="SELECT 日期,姓名,产量 FROM [表1$] UNION ALL SELECT 日期,姓名,产量 FROM [表2$] UNION ALL SELECT 日期,姓名,产量 FROM [表3$] UNION ALL "

有了这一句之后:

Sql="SELECT 日期,姓名,产量 FROM [表1$] UNION ALL SELECT 日期,姓名,产量 FROM [表2$] UNION ALL SELECT 日期,姓名,产量 FROM [表3$]"

VBA+ADO+SQL语句,小试牛刀。

SQL 查询语句-WHERE

私信 SQL 可以获取SQL代码的Excel文件

私信 视频 可以获取54集VBA入门视频

私信 VBA或 vba 可以获取文章中含VBA代码的Excel文件


分享到:


相關文章: