我的数据库表有 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/