簡體   English   中英

在多個數據庫上的單個MySQL查詢

[英]Single MySQL Query on multiple databases

我正在使用以下設置:

考慮兩個MySQL數據庫: abcxyz ,每個數據庫都有自己的表: abc table_in_abcxyz table_in_xyz 我需要運行一個簡單的MySQL查詢,該查詢從table_in_abc中選擇與table_in_abc具有JOIN關系的table_in_xyz

在Workbench中,以下查詢可以正常工作:

SELECT AB.* , XY.*
FROM `abc`.`table_in_abc` AB
LEFT JOIN `xyz`.`table_in_xyz` XY ON AB.`ID` = XY`ID`

我正在嘗試在VBA中實現相同的目的。 我能夠在單個數據庫上運行MySQL查詢(請參見下面的示例),但是當查詢涉及多個數據庫時,則無法執行。

在單個數據庫上的簡單VBA查詢示例:

Set conn = New ADODB.Connection
conn.Open "DRIVER={MySQL ODBC 5.3 Unicode Driver}" _
& ";SERVER=" & server_name _
& ";DATABASE=" & database_name _
& ";UID=" & user_id _
& ";PWD=" & password _
& ";OPTION=3" '

Set rs1 = New ADODB.Recordset
sqlstr = "SELECT * FROM `abc`.`table_in_abc` WHERE `ID`=" & ID & ";" 
rs1.Open sqlstr, conn, adOpenStatic
With Worksheets("Main").Cells(a, 1)
.ClearContents
.CopyFromRecordset rs1
End With
rs1.Close
Set rs1 = Nothing

我找到了一種解決方法,可以通過簡單地設置兩個連接到兩個不同數據庫的連接(在同一個MySQL實例上工作)來解決上述問題。

我的代碼如下所示:

Set conn = New ADODB.Connection
conn.Open "DRIVER={MySQL ODBC 5.3 Unicode Driver}" _
& ";SERVER=" & server_name _
& ";DATABASE=" & database_name _
& ";UID=" & user_id _
& ";PWD=" & password _
& ";OPTION=3" '

Set conn2 = New ADODB.Connection
conn2.Open "DRIVER={MySQL ODBC 5.3 Unicode Driver}" _
& ";SERVER=" & server_name _
& ";DATABASE=" & database_name2 _
& ";UID=" & user_id2 _
& ";PWD=" & password2 _
& ";OPTION=3" '

' SELECT Query with LEFT JOIN on the two different databases
Set rs1 = New ADODB.Recordset
sqlstr = "SELECT AB.* , XY.* FROM `abc`.`table_in_abc` AB LEFT JOIN `xyz`.`table_in_xyz` XY ON AB.`ID` = XY`ID`"
rs1.Open sqlstr, conn, adOpenStatic
With Worksheets("main").Cells(1, 1)
.ClearContents
.CopyFromRecordset rs1
End With
rs1.Close
Set rs1 = Nothing

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM