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';"
);
Это уродливо, если выполнить один и тот же запрос дважды, но делать то, что вы хотите.