存储MYSQL结果并在不同查询中用作IN语句

时间:2016-05-27 07:19:17

标签: mysql variables

我想知道是否有人可以指出如何实现这一点。

我有一个非常沉重的查询(主要是因为10年的历史记录涉及购买的记录数量,每天数千个)。

无论如何简化它会是这样的(更多的连接参与)

SELECT customerNumber from purchaseOrder where somestatus = someStatus;

在这种情况下,有多个联接,但我想知道的是客户编号,他们没有通过关系连接,因为订单也可以由非注册人员购买作为一次性的东西。

现在这个查询现在会产生大约950条记录。加载最多需要30秒(这很好)。

然而现在我想在不同的查询中重复使用结果,例如:

SELECT * from registeredUsers wherestatus 
IN(Some values which mean the account is not active)
and customerNumber in (results from query 1).

因此,当我将数字粘贴到IN部分时,第二个查询非常快。但是我想让它动态地工作,因为我需要为不同的情况创建一些查询2的变体。

这是一个选择吗?

我尝试将结果放在变量中,但后来我得到“Subquery返回多行”错误,这是有道理的。

那么还有其他方法吗?我在考虑创建一个可能有效的临时表吗?

1 个答案:

答案 0 :(得分:1)

是的临时表是去的地方。将registeredUsers的结果存储在临时表中,并将customerNumber使用sqlite3_open存储在子查询中的临时表中。

sqlite3* db = nullptr;
sqlite3_open(..., &db);
m_db.reset(db);

如果您的unique_ptr表没有sqlite3_close上的索引

,您可以跳过临时表中的索引