计算不同的列,并在Mysql查询中将计算出的输出记录在下面的一行中
我有一张桌子:-计算不同的列,并在Mysql查询中将计算出的输出记录在下面的一行中,mysql,Mysql,我有一张桌子:- ----------------+--------------+--------------+--------------------+ | IsFirstChunk | BufferedTime | ElapsedTime | TotalBufferTime| +----+--------------+----------------+--------------+--------------+ | Yes | 9.05669360395
----------------+--------------+--------------+--------------------+
| 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 |
试试这个:
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;
看见考虑忽略与问题解决错误代码相关的列:1064。您的SQL语法有错误;在第行“$getAllFromTable=getAllFromTable”附近,查看与MySQL服务器版本对应的手册,以了解要使用的正确语法1@sonadas,现在检查一下。