【发布时间】:2016-10-08 09:12:00
【问题描述】:
我有一个在常规 SQL 中工作的更新查询,但我无法让它在 R 中的 sqldf 中工作。
这是在常规 SQL 中工作的查询
UPDATE Merged INNER JOIN Merged AS Merged_1 ON Merged.AccountID = Merged_1.AccountID
SET Merged.Producttype = "FIDUCIARY 48 HRS"
WHERE (((Merged.Producttype)="SAVING ACCOUNTS") AND ((Merged_1.Producttype)="FIDUCIARY 48 HRS"));
我通过 AccountID 将同一个表加入到自身中,并且仅根据条件显示 AccountID 匹配的位置。我在一个表中选择“FIDUCIARY 48 HRS”的 Producttype,在另一个表中选择“SAVING ACCOUNTS”的 Producttype。然后我想将“储蓄账户”更新为“FIDUCIARY 48 HRS”。
这对我来说最有意义的是让它工作,但事实并非如此。我尝试了其他变体来声明字符串。
Merged = dataSegment
Merged_1 = dataSegment
sqldf("UPDATE Merged INNER JOIN Merged AS Merged_1 ON Merged.AccountID = Merged_1.AccountID
SET Merged.Producttype = "'"FIDUCIARY 48 HRS"'"
WHERE (((Merged.Producttype)="'"SAVING ACCOUNTS"'") AND ((Merged_1.Producttype)="'"FIDUCIARY 48 HRS"'"))")
当然,这种查询有可能在sqldf中做的不一样,但是我在网上找不到太多关于它的。
谢谢,
【问题讨论】:
-
您可以发布您尝试使用的数据吗?如果您使用
sqldf对存储在 R 中的数据执行 SQL 查询,我建议您开始学习data.table。主要原因是sqldf在执行查询之前会将您的数据转换为您配置的任何后端。data.table针对 R 进行了更多优化。 -
1.您收到的错误信息是什么? 2. 你能提供一个可重现的例子吗?
-
我得到的错误是.... sqliteSendQuery(con, statement,bind.data) 中的错误:语句中的错误:“INNER”附近:语法错误。我将尝试制作一个可重现的示例。