0

我有三个 mySQL 数据库表 1-3。我的目标是使用 R dplyr 对这些表执行一些左连接和内连接操作。我正在尝试使用 R 中的 dbplyr 将我的原始 SQL 代码转换为 dplyr 工作流。我的原始 SQL 查询的一部分如下所示:

INNER JOIN table3 ON tabl1.well = table3.well AND table2.plex LIKE table3.set

到目前为止,我的 R 代码如下所示:

library(RMySQL)
library(dbplyr)
library(dplyr)

t1 <- tbl(con,'table1')
t2 <- tbl(con,'table2')
t3 <- tbl(con,'table3')
st <- select(t2,set) %>% filter(!duplicated(set))

t1 %>% left_join(t2,.,by=c('d_id'='p_id') %>%
    inner_join(t3,by='well') %>%
    filter(plex %in% st) %>%      # this part is wrong!!
    collect()

上面的 R 代码运行时,结果与 SQL 查询不同。我想知道将SQL查询的内部连接部分转换为R中的dplyr语法的正确方法是什么。两列上的简单inner_join对于dplyr来说非常简单。但是我很难将带有 AND 和 LIKE 子句的部分翻译成 dplyr 术语。不幸的是,我没有此示例的任何可复制数据。

4

1 回答 1

1

dbplyr将保留中缀函数。换句话说,您可以将%like%运算符用作 SQL LIKE 的等效项。然后,您可以使用相同的通配符,例如:filter(name %like% "%text%")应该可以使用

于 2018-04-18T23:20:55.097 回答