mysql - 如何将带有 like 子句的 SQL 内连接转换为 dplyr 工作流程?

标签 mysql r dplyr tidyverse dbplyr

我有三个 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 语法的正确方法是什么。两列上的简单内部联接对于 dplyr 来说非常简单。但我很难将带有 AND 和 LIKE 子句的部分翻译为 dplyr 行话。不幸的是,我没有此示例的任何可复制数据。

最佳答案

dbplyr 将保留中缀函数原样。换句话说,您可以使用 %like% 运算符作为 SQL LIKE 的等效操作。然后,您可以使用相同的通配符字符,因此类似: filter(name %like% "%text%") 应该可以工作

关于mysql - 如何将带有 like 子句的 SQL 内连接转换为 dplyr 工作流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49617928/

相关文章:

r - 在 dplyr 中使用动态位置数创建滞后/超前变量

mysql - 无法从外部连接MySQL

C#图表控件: X value of a horizontal bar chart is 0 for all points in the serie

r - 用 dplyr 大写

r - 如何在R中创建斜率场?

html - 如何在开发 FlexdashBoard 应用程序时在 renderUI 中结合数据表和 HTML?

mysql - 连接池问题 : Connection has already been closed

PHP : Cannot get Exact match From MYSQL Database

r - dplyr 中具有特定组合的过滤器

r - 根据几列制作 group_indices