是否可以将查询结果存储在MySQL中的另一个查询中重用?

时间:2015-01-15 19:35:46

标签: python mysql

我有一个查询来搜索特定时间段内的数据,如下所示:

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]')

我必须递归地执行此操作(未确定次数),因此无法手动完成。是否可以以任何方式使用上一个查询的结果,或者我必须将整个第一个查询放入第二个查询,然后将整个第二个查询放入第三个查询?如果是后者,有没有办法加快速度,因为第一个查询只需要几秒钟,而且我无法多次重新运行查询。

3 个答案:

答案 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)