首页 > 解决方案 > dplyr中的“NOT IN”sql命令使用来自不同查询的结果

问题描述

我一直在使用 dplyr 和 dbplyr 为我的 sql 服务器生成查询并提取数据,但我找不到执行NOT INsql 命令的方法。

我正在尝试生成这样的东西

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 代码是什么?

标签: sqlrdplyrdbplyr

解决方案


Ronak Shah 的代码是正确的想法,但没有正确否定。现在它只是否定 ID 而不是否定比较的结果。

EMPLOYEE %>% 
filter(!(ID %in% id_list)) %>%
collect()

如果您将比较放在括号中,然后否定比较的结果,您的查询将很好地工作(我在我拥有的数据库连接上对其进行了测试)。


推荐阅读