我正在尝试在我的 PHP 脚本中运行以下脚本来计算运行总数。<?php // Create connection$conn = new mysqli($servername, $username, $password, $dbname);// Check connectionif ($conn->connect_error) { die("Connection failed: " . $conn->connect_error);}$sql = "set @csum := 0; select date(`DATE`) as dadate, Price , (@csum := @csum + Price) as cumulative_sum from Profits WHERE Strat = 'arm' order by dadate;";$result = $conn->query($sql)or die($conn->error);if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "{time: '" . $row["Date"]. "', value: ".$row["cumulative_sum"]. "},<br>"; }} else { echo "0 results";}$conn->close(); ?>我相信我收到了以下错误,因为我一次运行 2 个查询,但一次只应该执行一个查询。检查与您的 MySQL 服务器版本相对应的手册,以daDATE在第 1 行的“选择日期(),价格,(@csum := @csum + Price)作为累积_ ”附近使用正确的语法有什么办法可以解决这个问题,需要将 :csum 设置为 0 以确保它从 0 开始
2 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
严格来说,这是不正确的,但我找不到它不工作的例子(在 MySQL 8.0 之前的版本中)......
SELECT DATE(`daDATE`) date
, Price
, (@csum := @csum + Price) as cumulative_sum
from Profits
, (SELECT @csum := 0) vars
WHERE Strat = 'arm'
ORDER
BY daDATE;
请注意,因为您将结果传递给应用程序代码,所以您可以轻松地处理那里的累积算术
慕雪6442864
TA贡献1812条经验 获得超5个赞
另一个初始化变体(没有 SELECT,如果您需要它是单表,主要对 UPDATE 有用):
SELECT DATE(`daDATE`) date
, Price
, (@csum := @csum + Price) as cumulative_sum
from Profits
WHERE Strat = 'arm'
AND (@csum := 0) = 0
ORDER
BY daDATE;
- 2 回答
- 0 关注
- 121 浏览
添加回答
举报
0/150
提交
取消