RSQlite从另一个表中获取数据,给定第一个列中的列值

问题描述 投票:0回答:3

假设我有两个表,A和B。

Table A
X  Y  Z
1  2  3
4  5  6
7  8  9

Table B
W  X  Y
3  1  4
4  4  5
7  5  9

我已经确定表A的X值1和4很有趣,因为Z发生了什么(它们小于8或其他值)。在表B中,我要选择X值为1和4的W列值。]

我愿意接受两种方法。

  1. 使用我碰巧从RSQLite函数调用的SQL命令进行所有操作

  2. 使用R形成数据帧。

  3. 由于我相当了解R,并且对SQL一无所知,所以我一直在追求方法2。我可以轻松地选择X = 1和X = 4的X和Z列并创建一个数据帧。

[没有用的是,当我尝试在表B中查找X = 1和X = 4时,如果将值键入dbGetQuery,则一切正常。

但是,我有很多价值观,不能一手掌握。当我像dbGetQuery那样调用它们时,...WHERE "X" = str(data.frame(A)[1:2,1])不允许我传递表A中的值。我收到的错误似乎是我在寻找名为“ 1”而不是“ X”的列。

假设我有两个表A和B。表AXYZ 1 2 3 4 5 6 7 8 9表BWXY 3 1 4 4 4 5 7 5 9我已将表A X值1和4标识为很有意思...

r database sqlite sqldf rsqlite
3个回答
3
投票

在纯SQL中,这是两个表的直接连接,仅过滤您关心的a.z值:


1
投票
library(dplyr)

Table_A %>% 
  filter(Z < 8) %>% 
  inner_join(., Table_B, by="X", suffix=c(".A",".B")) %>% 
  select(W)

#>   W
#> 1 3
#> 2 4

0
投票
sqlite> .headers on
sqlite> select W from B where X in (select X from A where Z < 9);
W
3
4 
© www.soinside.com 2019 - 2024. All rights reserved.