假设我有两个表,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列值。]
我愿意接受两种方法。
使用我碰巧从RSQLite函数调用的SQL命令进行所有操作
使用R形成数据帧。
由于我相当了解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标识为很有意思...
在纯SQL中,这是两个表的直接连接,仅过滤您关心的a.z
值:
library(dplyr)
Table_A %>%
filter(Z < 8) %>%
inner_join(., Table_B, by="X", suffix=c(".A",".B")) %>%
select(W)
#> W
#> 1 3
#> 2 4
sqlite> .headers on
sqlite> select W from B where X in (select X from A where Z < 9);
W
3
4