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文件


分享到:


相關文章: