繁体   English   中英

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

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

我的数据库中有两个表,名为“COL”和“Duplicates”。 如果两个表中“generic”字段中的值匹配,我希望将 COL 中“item_price”字段中的值更改为 Duplicates 中“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 'update COL set COL.item_price=Duplicates.avg_price where COL.generic=Duplicates.generic'”

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

目前,您的 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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM