如何在第二个查询中使用第一个查询的结果

时间:2012-01-25 02:39:01

标签: mysqli

我一直在阅读有关mysqli multi_query的内容并且找不到办法(如果可能的话)

$db->multi_query("SELECT id FROM table WHERE session='1'; 
               UPDATE table SET  last_login=NOW() WHERE id=table.id");

它似乎无法奏效。我试图使用第一个查询的ID来更新第二个。这可能吗

1 个答案:

答案 0 :(得分:0)

UPDATE table 
    SET    last_login = NOW()
    WHERE  id IN (SELECT  id
                  FROM    table2
                  WHERE   session = '1')

这将使用session ='1'更新所有记录。当然假设子查询返回多个结果集,从我所看到的结果集中,它将会发生。

这也允许您删除multi_query()方法,因为它只是一个查询。


回复评论:

根据http://lists.mysql.com/mysql/219882,这似乎不可能与MySQL。虽然我想你可以选择类似的东西:

$db->multiquery(
    "UPDATE table 
         SET    last_login = NOW()
         WHERE  id IN (SELECT  id
                       FROM    table2
                       WHERE   session = '1');
     SELECT id
     FROM   table2
     WHERE  session = '1';"
 );

哪个很丑,两次执行相同的查询,但应该做你想做的事。