【发布时间】:2019-05-31 08:53:56
【问题描述】:
我一直在使用 dplyr 和 dbplyr 为我的 sql 服务器生成查询并提取数据,但我找不到执行 NOT IN sql 命令的方法。
我正在尝试生成这样的东西
SELECT * FROM EMPLOYEE WHERE ID NOT IN id_list
其中 id_list 是从 dplyr 中的另一个查询获得的
id_list <- mutate(uid = distinct(id)) %>% select(uid) %>% collect()
id_list 是一个 tbl_Microsoft SQL Server 对象。
生成 SQL 查询的 dplyr 代码是什么?
【问题讨论】:
-
否定
%in%?EMPLOYEE[!EMPLOYEE$ID %in% id_list]或dplyr,EMPLOYEE %>% filter(!ID %in% id_list) -
谢谢。否定
%in%不起作用。但我认为过滤器功能可以完成这项工作。编辑:!ID 抛出了一个 sql 错误 -
as.data.frame(id_list)$uid成功了 -
请查看我发布的答案,该答案解决了如何使用 dbplyr 否定此查询。 Ronak Shah 的答案是正确的,只需要在否定之前将比较放在括号中。