我正在尝试根据已有的列向量获取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的行吗?
答案 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)"