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

时间:2019-03-07 19:27:01

标签: sql r sql-update rodbc

我的数据库中有两个表,分别为“ 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'“

我以为这很简单,但是我可以看出我错了。

1 个答案:

答案 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;