как использовать результаты первого запроса во втором запросе - PullRequest
0 голосов
/ 25 января 2012

Я читал о mysqli multi_query и не смог найти способ сделать это (если это возможно)

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

Кажется, это не работает. Я пытаюсь использовать идентификатор первого запроса для обновления второго. это возможно

1 Ответ

0 голосов
/ 25 января 2012
UPDATE table 
    SET    last_login = NOW()
    WHERE  id IN (SELECT  id
                  FROM    table2
                  WHERE   session = '1')

Это обновит все ваши записи с сеансом = '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';"
 );

Это уродливо, если выполнить один и тот же запрос дважды, но делать то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...