2012-07-30 2 views

ответ

1

Попробуйте

$sql_data = "UPDATE `database1`.`users` SET `balance` = MIN(`balance`) + 5 
WHERE ('" . $session->value('user_id') . "') " 
1

Агрегатные функции требуют агрегацию, вызванную п GROUP BY. Без этого запрос недействителен.

+0

В Mysql не нужно – Madhivanan

+0

@Madhivanan: Тот факт, что MySQL будет успешно выполнять недопустимые запросы, не делает меня неправильным. –

+0

Вы правы. Я просто сказал, что он действителен в mysql. Mysql имеет множество моделей поведения, которые противоречат стандарту ANSI – Madhivanan

0

Не зная, что ошибка, я предполагаю, что это вытекающие из MIN(balance + 5). Я думаю, вы имеете в виду MIN(balance) + 5 - MIN должен принимать только имя столбца, а не арифметическое выражение.

0

Я думаю, что это то, что вы ищете:

UPDATE database1.users a 
    INNER JOIN 
     (SELECT id, MIN(balance) 
     FROM database1.users 
     WHERE user_id= ('" . $session->value('user_id') . "') 
     GROUP BY id 
     ) b 
     ON a.id = b.id 
WHERE user_id = ('" . $session->value('user_id') . "'); 
Смежные вопросы