MySql помогите правильно составить запрос с подзапросом

Рейтинг: 0Ответов: 2Опубликовано: 04.08.2023

Вот запрос

UPDATE `bank` SET `money2`=`money2`+2 WHERE `uid` = ( SELECT `id` FROM `users` WHERE `online` > 0); DESC;

в ответе ошибка #1242 - Подзапрос возвращает более одной записи

Как перестроить запрос чтоб обновляла все вернувшие значения?

Ответы

▲ 1

Либо IN с подзапросом, либо джойн. При большом числе записей лучше джойн.

UPDATE b
INNER JOIN u ON (
    u.id = b.uid 
    AND u.online > 0
)
SET b.money = b.money + 2
▲ 0
UPDATE `bank` SET `money2`=`money2` + 2 
where exists (
    select 1 from users where users.id = bank.uid and online
)
;