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

Using R, is there a way to query rows of a sql file by using a vector of one column of numbers?

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

一个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 comma-separates 输入,用在这里很合适。 sprintf() 使用 "fill-in-the-blank" 语法,对于像这样的东西,它通常比 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)"