我有兩個表,我需要用第二個表中的最大值更新第一個表
表格1
| 物品 | 價值 |
|---|---|
| 專案1 | 價值1 |
| 專案2 | 價值2 |
表2
| 物品 | 價值 |
|---|---|
| 專案1 | 價值1 |
| 專案1 | 價值2 |
| 專案2 | 價值... |
我使用這個 SQL 陳述句:
DoCmd.RunSQL "UPDATE table1 AS t1 INNER JOIN " & _
"(SELECT table1.item, MAX(table2.value) AS maxvalue FROM table1 INNER JOIN table2 " & _
"ON table1.item = table2.item GROUP BY table1.item) AS t2 " & _
"ON t1.item = t2.item SET t1.value = t2.maxvalue "
我收到一個錯誤
操作必須使用可更新的查詢
如果我從陳述句中取出 max 函式,SQL 將執行,但我需要最大值
uj5u.com熱心網友回復:
我關注@june7,是的,當涉及聚合查詢時,Access 不允許 UPDATE 操作。
我什至也嘗試將表與記錄集連接起來,這種方式也是不可能的。
所以一個解決方案是先創建臨時表,然后更新第一個表。
所以我的問題的解決方案是:
DoCmd.RunSQL "SELECT table1.item, Max(table2.value) AS maxvalue INTO tempTBL " & _
"FROM table1 INNER JOIN table2 ON table1.item = table2.item" & _
"GROUP BY table1.item " & _
"ORDER BY table1.item"
DoCmd.RunSQL "UPDATE table1 AS t1 INNER JOIN tempTBL AS t2 " & _
"ON t1.item = t2.item " & _
"SET t1.value = t2.maxvalue "
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/529616.html
標籤:sqlvba毫秒访问
