2017-02-23 4 views
0

У меня есть таблица: -Расчеты различных столбцов и записи вычисленный выход в одну строку ниже в MySQL Query

----------------+--------------+--------------+--------------------+ 
| IsFirstChunk | BufferedTime  | ElapsedTime | TotalBufferTime| 
+----+--------------+----------------+--------------+--------------+ 
| Yes   | 9.056693603959156 | 13.434  | NULL   | 
| NULL   | 8.397168452045355 | 13.915  | NULL   | 
| NULL   | 9.480674058760885 | 14.576  | NULL   | 
| NULL   | 8.25989921902355 | 15.816  | NULL   | 
| NULL   | 9.029792805273495 | 18.573  | NULL   | 
| NULL   | 9.55641146650022 | 26.385  | NULL   | 
| NULL   | 7.567281197192748 | 37.274  | NULL   | 
| NULL   | 9.046965152922192 | 46.142  | NULL   | 
| NULL   | 8.135399698570493 | 56.825  | NULL   | 

я хочу, чтобы вычислить столбцы BufferTime и ElapsedTime и вставить этот вывод в колонке TotalBufferTime но я хотите записать вывод в одной строке ниже столбца TotalBufferTime не в соседней строке.

Я хочу сделать что-то вроде этого: -

update RequestInfo SET `TotalBufferTime` = BufferedTime + ElapsedTime; 

только вещь я хочу записать вывод только на одну строку ниже в TotalBufferTime

+--------------+--------------+--------------+--------------------+ 
| IsFirstChunk | BufferedTime  | ElapsedTime | TotalBufferTime| 
+----+--------------+----------------+--------------+--------------+ 
| Yes   | 9.056693603959156 | 13.434  | 0    | 
| NULL   | 8.397168452045355 | 13.915  | 22.4906936  | 
| NULL   | 9.480674058760885 | 14.576  | 22.31216845 | 
+0

См. Http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query , Рассмотрим игнорирование столбцов, не относящихся к проблеме – Strawberry

ответ

1

Попробуйте это:

update RequestInfo join (
    select curr.id, (
     select (prior.BufferedTime + prior.ElapsedTime) AS value 
      from RequestInfo prior 
     where prior.id < curr.id 
     order by prior.id desc 
     limit 1) value 
     from RequestInfo curr 
) g on g.id = RequestInfo.id 
set RequestInfo.TotalBufferTime = g.value; 
+0

Получение кода ошибки: 1064. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '$ getAllFromTable = getAllFromTable()' в строке 1 –

+0

@sonadas, проверьте его сейчас. – Ruby

Смежные вопросы