后续查询取决于初始查询的结果:如何?

时间:2010-08-14 05:00:42

标签: sql database mysql

说我有3个查询。查询1返回查询2和查询3需要的一条信息。查询2和查询3是否有办法从查询1的结果中访问这条信息?

现在,我有一次查询1执行两次:一次在查询2中,一次在查询3中。这对我来说似乎没有效率。

MySQL有更好的方法吗?

编辑1:

例如,假设查询1返回:

    Id
   ====
    1
    3
    7

现在,查询2和查询3在其各自的WHERE子句中需要1,3,7。

2 个答案:

答案 0 :(得分:0)

假设:

query1: select id from foo;
query2: select * from bar where id = #value#;

您可以像这样编写query2:

select * from bar where id in (select id from foo);

如果在运行两个查询之间将项目添加到foo,则可能会出现问题。

答案 1 :(得分:0)

您可以通过使用可序列化的事务来消除结果集更改的可能性。大多数数据库支持这些如果您使用InnoDB存储引擎,MySQL会执行此操作。在发出第一个查询之前发出一个

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

命令。完成所有陈述后,ROLLBACK;

有关详细信息,请参阅此处... http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html