我正试图在我的PHP脚本中运行以下脚本来计算运行总数。
<?php // Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($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(); ?>
我相信我会收到下面的错误,因为我一次运行两个查询,但一次只能执行一个查询。
查看与MySQL服务器版本对应的手册使用的正确语法接近'选择日期(
daDATE
(,价格,(@csum:=@csum+价格(作为第1行的累计_'
有什么办法可以解决这个问题吗?需要将:csum设置为0以确保它从0 开始
严格来说,这是不正确的,但我找不到它不工作的例子(在8.0之前的MySQL版本中(…
SELECT DATE(`daDATE`) date
, Price
, (@csum := @csum + Price) as cumulative_sum
from Profits
, (SELECT @csum := 0) vars
WHERE Strat = 'arm'
ORDER
BY daDATE;
注意,因为您将结果传递给应用程序代码,所以您可以轻松地处理的累积算术
另一个初始化变体(没有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;