我有一个查询来搜索特定时间段内的数据,如下所示:
SELECT id1
FROM table1
WHERE (time > '[time goes here]'
AND time < '[time goes here]')
我在Python中存储和使用这些数据,然后我希望从另一个表中搜索上一个结果中的数据,如下所示:
SELECT id2
FROM table2
WHERE (table2.id1 = '[results from previous query]'.id1
AND '[other conditions go here]')
SELECT id3
FROM table3
WHERE (table3.id2 = '[results from previous query]'.id2
AND '[other conditions go here]')
我必须递归地执行此操作(未确定次数),因此无法手动完成。是否可以以任何方式使用上一个查询的结果,或者我必须将整个第一个查询放入第二个查询,然后将整个第二个查询放入第三个查询?如果是后者,有没有办法加快速度,因为第一个查询只需要几秒钟,而且我无法多次重新运行查询。
答案 0 :(得分:0)
你可以像这样使用CTE
with data1 as
(
select id2 FROM table2 WHERE
),
data2 as
(
select id3 from table 3 where
)
select * from data1,data2
答案 1 :(得分:0)
with data1 as
(
select id2 FROM table2 WHERE
),
data2 as
(
select id3 from table3,data1 where <condition>
)
select * from data2
答案 2 :(得分:0)
<强>解决方法1:强> 你可以使用join:
从table1 t1,table2 t2中选择t2.id2,其中t2.id2 = t1.id1和t1.time&gt; x和t1.time
<强>溶液2:强> 您还可以将结果保存在列表中,然后将其传递给下一个查询: 从table2中选择id2,其中id2在(list)
中