RODBC-谁能告诉我为什么这不起作用?

RODBC-Can anyone tell me why this doesn't work?

我的数据库中有两个表,分别是 "COL" 和 "Duplicates"。如果字段 "generic" 中的值在两个表中都匹配,我想将 COL 中字段 "item_price" 中的值更改为重复项中字段 "avg_price" 中的值。我的代码是:

library(RODBC)
db <- "C:/Projects/Online.accdb"
col <- odbcConnectAccess2007(db) 
sql=paste0("update COL set COL.item_price=Duplicates.avg_price where COL.generic=Duplicates.generic")
result <- sqlQuery(col,sql)
close(col)

但我收到错误

[1] "07002 -3010 [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2."
[2] "[RODBC] ERROR: Could not SQLExecDirect 'update COL set COL.item_price=Duplicates.avg_price where COL.generic=Duplicates.generic'"

我认为这很简单,但我知道我错了。

目前,您的 SQL 查询从未在 Duplicates table 中找到来源。因此,引擎不知道别名的含义。只需调整 UPDATE ... JOIN 查询,其中 WHERE 子句变为 JOIN 子句:

UPDATE COL c
INNER JOIN Duplicates d ON c.generic = d.generic
SET c.item_price = d.avg_price;