PHP/MYSQLi - 显示上次日期查询

标签 php mysql mysqli

我的数据库表有 5 列:“id”、“date_visited”、“page_title”、“ip”和“total_views”。 我无法显示 ORDER BY 'date_visited'。 我的 PHP 查询是:

<?php
[...]
$query = "SELECT *,count(*) FROM table WHERE ip GROUP BY page_title";
$result = mysqli_query($link,$query) or die(mysqli_error($link). "Q=".$query);
if(!$result == 0) {
    while ($row = mysqli_fetch_array($result)) {
        $dataList_br .= '<tr>
                            <td>' .$row['date_visited']. '</td>
                            <td>' .$row['page_title']. '</td>
                            <td>' .$row['count(*)']. '</td>
                        </tr>';
    }
} else {
    $dataList_br .= '<p class="warning">No data found in database.</p>';
}
?>

输出时,显示[日期][页面标题]和[总浏览次数]。 请有人帮助我,如何显示查询的最后日期,而不是现在显示访问页面的第一天。

谢谢。

最佳答案

MySQL 对GROUP BY 的内容比较宽松,如果列不在GROUP BY 中但在中,则会任意地为该组返回一行。 >选择编辑。就您而言,它只是为您提供了每个组的第一行(最低日期)。

获取每组 MAX(date_visited) 的行的 page_name,并将其与主表连接起来,以从主表中提取剩余的列。

SELECT
  table.id,
  table.ip,
  table.total_views,
  maxdates.date_visited,
  maxdates.page_name,
  maxdates.thecount
FROM
  table
  JOIN (
    /* Subquery returns the aggregates to join against 
       the main table so other columns can be pulled in */
    SELECT 
      page_title, 
      MAX(date_visited) AS maxdate, 
      COUNT(*) AS thecount 
    FROM table 
    GROUP BY page_title
  ) maxdates
    ON table.page_name = maxdates.page_name 
       AND table.date_visited = maxdates.maxdate

关于PHP/MYSQLi - 显示上次日期查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11551876/

相关文章:

php - 在参数中设置 symfony 缓存目录

php - 单击从 mysql 加载到表中

php - 在 codeigniter 中获取不正确的查询

mysql - 按部分字符串分组

php - 如何防止/捕获 MySQLi 的连接错误

php - CSV 或 Mysql 用于静态数据?

php - PDO - 将大数组插入 MySQL 数据库

mysql - 我如何在 sql 中进行查询,使 o 拥有更多房屋的人?

PHP/Mysqli 插入语句不写入数据库

PHP Mysqli 和使用 call_user_func_array