我有一个SQL数据库,其中一列ID是ID,而另一列具有每个ID的对应信息。我有一个包含ID#的向量,我想要相应的信息。如何只查询那些特定的ID,同时又获得相应的信息,并将其存储在表中?
我尝试过循环,尝试过过滤,并对其进行硬编码。
con <- dbConnect(RSQLite::SQLite(), "data.db")
df<- tbl(con,"kv")
newish <- data.frame(df)
filter(person %in% IDs) %>%
collect()
连接后,调用给定向量中的所有ID,并提取相应的信息并将其存储在表中
如果我厌倦了for循环,则该表将不会打印所有信息,而只会显示向量中最后一个ID的信息,因此过滤将无法进行,因为它表明向量仅必须是向量而不是90,000。实际结果应该是一个仅包含患者ID号和我在病媒中拥有的人员的相应信息的表。
答案 0 :(得分:0)
这是一个SQL问题,可以使用R分解如下:
# not run
# con <- dbConnect(RSQLite::SQLite(), "data.db")
ids <- paste0("id_", sample(1:100, 10))
id_var <- "id_var" # you can put more ids here with a corresponding data.frame in ids
vars <- paste0("var", 1:10)
db_name <- "mydatabase"
tab_name <- "mytable"
whereq <- paste("where", id_var, "in", paste0("('", paste0(ids, collapse = "', '"), "')") )
rqt <- paste("select", paste(vars, collapse = ", "),
"from", paste0(db_name, ".", tab_name), whereq, ";")
# check the query
rqt
#> [1] "select var1, var2, var3, var4, var5, var6, var7, var8, var9, var10 from mydatabase.mytable where id_var in ('id_99', 'id_1', 'id_72', 'id_86', 'id_65', 'id_59', 'id_67', 'id_4', 'id_82', 'id_2') ;"
# to uncomment
# res <- DBI::dbGetQuery(con, rqt)
# res <- tibble::as_tibble(res) # OR data.table::data.table(res) OR as.data.frame(res)
由reprex package(v0.2.1)于2019-06-11创建