在php中每24小时显示一行sql查询数据

问题描述 投票:0回答:1

如何从sql表中获取所有行,但每24小时显示一行?目前我的sql select将显示表中的所有行,我想每天显示一行,即24小时

global $wpdb;
$result = $wpdb->get_results( "SELECT `message` FROM `my_Db_table`; ");

echo "<style>";
echo "body {font-family: Arial;}";

echo ".table_container { padding: 10px 12px 0px 12px;  border: 1px solid #ccc;  }";
echo ".table_container th { background-color:lightblue; color:white; font-weight:bold; border-left: 1px solid white;}";
echo "</style></head>";
echo "<body>";

echo "<div class=\"table_container\"><table>";
echo "<tr><th style=\"padding-left:10px;\">Quote of Day</th></tr>";
foreach ($result as $row) {
    echo "<tr><td>".$row->quote."</td></tr>";
}

echo "</table></div>";
?>
php mysql database wordpress
1个回答
0
投票

这里有一个解决方案,假设您希望在任何 24 小时内收到 first 消息。

SELECT `message`
FROM (
    SELECT 
      ROW_NUMBER() OVER (PARTITION BY DATE(my_datetime_column) ORDER BY my_datetime_column) AS rownum
      `message` 
    FROM `my_Db_table`
) AS t
WHERE rownum = 1;

这使用窗口函数将行号应用于结果,每天的行号从 1 开始。然后,外部查询的 WHERE 子句中的条件仅过滤行号为 1 的行,即每天的第一行。

只需更改窗口函数的排序顺序,您就可以轻松获取每天的最后一条消息:

... ROW_NUMBER() OVER (PARTITION BY DATE(my_datetime_column) 
    ORDER BY my_datetime_column DESC) AS rownum ...
                                ^^^^

您仍然需要 rownum = 1 的行。因为窗口顺序相反,所以这将是当天的最后一行。

© www.soinside.com 2019 - 2024. All rights reserved.