使用R,有没有一种方法可以通过使用一列数字的向量来查询sql文件的行?

时间:2019-06-04 18:53:05

标签: r qsqlquery

我正在尝试根据已有的列向量获取R上sql文件行的查询。 sql文件具有一列ID,而其余文件具有基于ID的信息。我有一个自己感兴趣的ID的单独向量,我想知道是否有一种方法可以根据我拥有的ID的向量来查询信息和ID的行。

我尝试过

mydb <- dbConnect(RSQLite::SQLite(), "name.db") 

x = dbGetQuery(mydb, 'SELECT ID FROM table;')

,它获取所有ID,但我只想基于矢量获取特定的ID。我不能在那里输入字符向量,因为我有大量数据。

a <- c(100,102,103,104..)



mydb <- dbConnect(RSQLite::SQLite(), "name.db") 

x = dbGetQuery(mydb, 'SELECT ID FROM table==a ;')

这不仅给了我想要的人的ID

有没有一种方法可以根据具有所需ID#的一列向量查询行?我们可以以某种方式使系统仅输出包含与我们提供的向量相匹配的ID的行吗?

1 个答案:

答案 0 :(得分:1)

SQL查询是SQL代码的字符串。您只需要使用R代码来构建所需的查询:

类似这样的东西:

a = 100:104
my_query = paste("SELECT ID FROM TABLE WHERE ID IN (", toString(a), ")")
my_query
# "SELECT ID FROM TABLE WHERE ID IN ( 100, 101, 102, 103, 104 )"

x = dbGetQuery(mydb, my_query)

toString用逗号分隔输入,这在这里是适当的。 sprintf()使用“填空”语法,对于诸如此类的东西,它通常比paste()更具可读性:

my_q = sprintf("SELECT ID FROM TABLE WHERE ID IN (%s)", toString(a))
my_q
# [1] "SELECT ID FROM TABLE WHERE ID IN (100, 101, 102, 103, 104)"
相关问题