UNION ALL
SQL语句的限制
1.SQL查询连接的表上限50个(最多50个表)
2.查询语句字符限制38596个字符(不超过38596个)
超过了会出现如下二个错误提示类型之一:
1.“查询过于复杂"
2."获取表格数据时发生错误"。
源数据:
二表连接:
Sql = "SELECT 日期,姓名,产量 FROM [表1$] union all SELECT 日期,姓名,产量 FROM [表2$]"
结果就不展示了,大家可以自己练习:
多表连接目标如下:
代码运行结果如下:
代码如下:
注意事项:
' 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$]"