MySQL update Query с помощью Select - PullRequest
0 голосов
/ 09 марта 2019

Может кто-нибудь объяснить, как написать запрос на обновление, чтобы обновить столбец «newBalance» в таблице «abcd» с O / P баланса в следующем запросе?

Я хотел бы обновить столбец newBalance с помощьюБаланс, рассчитанный для каждой строки с использованием приведенного ниже запроса.

SELECT id
     , inAmt
     , outAmt
     , @prev := if(id = 1, @prev := @curBalance , @prev + (@prevOut-@prevIn)) as balance
     , @prevIn :=inAmt
     , @prevOut := outAmt 
  from (select @prev := 0) as i
     , abcd 
 order 
    by id

Любая помощь высоко ценится.

1 Ответ

0 голосов
/ 09 марта 2019

Вы можете использовать update с join:

update abcd join
       (select id, inAmt, outAmt,
               @prev := if(id = 1, @prev := @curBalance , @prev + (@prevOut-@prevIn)) as balance,
               @prevIn := inAmt,
               @prevOut := outAmt
        from (select @prev := 0) as i cross join
             abcd
        order by id
       ) x
       on abcd.id = x.id
    set abcd.newbalance = x.balance;

С учетом всего этого ваш запрос точно не будет работать и в любой момент может потерпеть неудачу. Вы используете переменные в одном выражении и назначаете их в другом. MySQL не гарантирует порядок вычисления выражений.

Однако это был не тот вопрос, который вы задали. Если вы хотите, чтобы запрос был исправлен, задайте новый вопрос с примерами данных и желаемыми результатами.

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