问题描述
我想获得过去 1 天的最高值,但查询不起作用。 (按日期格式化的日期/时间列)。 我要查询的数据在多个标头中。
SELECT sign,date,price,MAX(price) as maxp FROM table WHERE datetime >= NOW() - INTERVAL 1 DAY
我的完整查询;
$que = $conn->mysql_query("SELECT sign,MAX(price) as maxp FROM table WHERE date >= (NOW() - INTERVAL 1 DAY) group by sign,date");
$row = mysql_fetch_array($que); {
?>
<?php
foreach ($que as $row) {
$newQuery = "UPDATE tableb SET `daymax`='".$row["maxp"]."' where `sign`='".$row["sign"]."' ";
mysqli_multi_query($conn,$newQuery)
?>
解决方法
如果您想要签名、日期明智的最高价格,您需要按签名、日期分组。试试这个。
SELECT sign,date,MAX(price) as maxp
FROM table WHERE datetime >= NOW() - INTERVAL 1 DAY
group by sign,date
,
您可以在一个查询中完成这一切:
update tableb b join
(selecct sign,MAX(price) as maxp
from table t
where datetime >= NOW() - INTERVAL 1 DAY
group by sign
) tt
on b.sign = tt.sign
set b.daymax = tt.maxp;
让数据库来工作!如果可以在数据库中进行循环,则没有理由在应用程序中进行循环。
请注意,now()
具有时间分量。您正在处理日期,因此您可能真的需要 curdate()
。