2017-08-04 68 views
1

在該R MySQL查詢內部數據幀值 - 是否有可能使一個IN,其中,在值來自數據幀列MySQL查詢?的R - R中

實例的我想要做的事:

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 
);" 

回答

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);" 

希望這有助於!

+0

我也這麼做,壽的情況下,其中的SQL注入本質上不是一個問題。 – joran