【发布时间】:2023-01-10 22:56:35
【问题描述】:
我有一个表 - “cla_retail” - 在 sql 中有 20,000 多行。我已经使用 dbConnect 读取了 R 中的表并将其存储在名为“cla_retail_df”的数据框中 我正在尝试在数据帧 abc 上使用 sqldf 执行 DELETE 查询。当我在 mySQL 中执行时,此删除查询工作正常,但在 R 中执行时返回 0 个结果。
我也尝试过使用 dplyr 但我对 sql 查询中的许多“不”感到困惑。 我已经初始化了其他数据框
- sales_vou_main_appr,
- issue_to_karigar_approval_main ,
- issue_to_hallmark_main ,
- sample_issue_to_karigar_main
这是我在 R 中尝试过并在 abc_v2 中抛出 0 行的内容:
abc <- cla_retail_df abc_v2<- sqldf("delete from abc where status<>'N' and barcode not in(select barcode from sales_vou_main_appr where ret_status='0') and barcode not in(select barcode from issue_to_karigar_approval_main where ret_status='0') and barcode not in(select barcode from issue_to_hallmark_main where rec_status='0') and barcode not in(select barcode from sample_issue_to_karigar_main where rec_status='0')")
【问题讨论】:
-
这主要是 stackoverflow.com/q/61373594/3358272 的骗局(因此 sqldf FAQ 8 是相关的),尽管您使用的是
DELETE而不是UPDATE。前提是(我相信)相同:sqldf不会就地删除,而且它永远不会自动返回。如果您希望abc_vw成为不带行的cla_retail_df的内容,则abc_v2 <- sqldf(c("delete from abc where ...", "select * from abc"))。
标签: mysql r dplyr sql-delete sqldf