#php #mysql #sql
Вопрос:
Я хочу получить наибольшее значение за последний 1 день, но запрос не работает. (столбцы даты / времени, отформатированные по дате). Данные, которые я хочу запросить, находятся в нескольких заголовках.
SELECT sign, date, price, MAX(price) as maxp FROM table WHERE datetime >= NOW() - INTERVAL 1 DAY
мой полный запрос;
$que = $conn->mysql_query("SELECT sign, date, 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)
?>
Комментарии:
1. в чем заключается ошибка?
2. @Chakri «запрос пуст». но не пусто.
3. И вы не можете смешивать и сопоставлять API. Выбросьте устаревший (mysql_)
Ответ №1:
Если вы хотите подписать,дата,максимальная цена, которую вам нужно сгруппировать по знаку, дате. Попробуй это.
SELECT sign, date, MAX(price) as maxp
FROM table WHERE datetime >= NOW() - INTERVAL 1 DAY
group by sign,date
Комментарии:
1. «запрос пуст» . Я добавил свой полный запрос. Во всем запросе может быть проблема
2. Пожалуйста, поделитесь полным запросом со структурами таблиц.
3. ПОЖАЛУЙСТА, ПРОВЕРЬТЕ, ЕСТЬ ЛИ У ВАС ДАННЫЕ В ЭТОМ ДИАПАЗОНЕ ДАТ.
Ответ №2:
Вы можете сделать это все за один запрос:
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()
вместо этого.