我的数据库中有两个表,分别为“ COL”和“ Duplicates”。如果两个表中“通用”字段中的值都匹配,我希望将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驱动程序]太少 参数。预期为2。“
[2]“ [RODBC]错误:无法SQLExecDirect'更新COL集 COL.item_price = Duplicates.avg_price其中 COL.generic = Duplicates.generic'“
我以为这很简单,但是我可以看出我错了。
答案 0 :(得分:1)
当前,您的SQL查询永远不会在 Duplicates 表中提供源。因此,引擎不知道别名的含义。只需针对UPDATE ... JOIN
子句变为WHERE
子句的JOIN
查询进行调整:
UPDATE COL c
INNER JOIN Duplicates d ON c.generic = d.generic
SET c.item_price = d.avg_price;