R - R中mysql查询内的数据帧值

时间:2017-08-04 20:13:46

标签: sql r dataframe

在R中 - 是否可以使用IN进行mysql查询,其中IN中的值来自DataFrame列?

我尝试做的事情的例子:

Directory = read.csv("worlddirectory.csv", header = TRUE, sep = ",",stringsAsFactors=FALSE)

Active_Customers = Directory[(Directory$Status == "Active"),]

PhoneNumbers = dbGetQuery(DBConnection,
"
Select
db.phonenumbers,
db.names
from
database db
where
db.country IN
(
Active_Customers$Country
);"

1 个答案:

答案 0 :(得分:2)

我们可以看到here,预期语句如下:

WHERE column_name IN (value1, value2, ...);

我们可以将paste与参数collapse=", "一起使用以获得所需的格式。我认为这应该有效:

PhoneNumbers = dbGetQuery(DBConnection,
paste0("SELECT db.phonenumbers, db.names ",
"FROM database db ",
"WHERE db.country IN (",
       paste(Active_Customers$Country,collapse=", "),");"))

示例:

Active_Customers <- data.frame(Country=c("NL","BE","US"))

paste0("SELECT db.phonenumbers, db.names ",
"FROM database db ",
"WHERE db.country IN (",
paste(Active_Customers$Country,collapse=", "),");")

输出:

[1] "SELECT db.phonenumbers, db.names FROM database db WHERE db.country IN (NL, BE, US);"

希望这有帮助!