我正在尝试从MySQL数据库中获取许多行,并按发布日期对其进行分组。

最终结果我想要以下内容。

周一
-第1条
-第二条
-第3条

周二
-第1条
-第二条

周三
-第1条
-第二条
-第3条
-第4条

依此类推,我不确定在没有PHP的情况下是否可以单独在MySQL中完成此工作。

这是我到目前为止的查询,但似乎没有按天分组。

SELECT
cms_news.news_id,
cms_news.news_title,
cms_news.news_date,
cms_news.news_category,
cms_news.news_source,
cms_news.news_type,
cms_news.news_content
FROM
cms_news cms_news,
GROUP BY
DAYOFMONTH(FROM_UNIXTIME(cms_news.news_date))
ORDER BY
cms_news.news_date DESC

谢谢。

最佳答案

使用这样的查询以正确的顺序获取数据:

SELECT
DAYNAME(FROM_UNIXTIME(cms_news.news_date)) AS DayName,
cms_news.*
FROM cms_news
ORDER BY DAYOFWEEK(FROM_UNIXTIME(cms_news.news_date)), cms_news.news_date
DAYOFWEEK返回1到7之间的数字(1 =星期日),因此您的结果将在星期日到星期六进行排序。 DAYNAME返回当天的文字名称(星期日,星期一,...)。然后,您可以使用PHP分组并显示数据:

$DayName = "";
while($row = mysql_fetch_assoc($query)) {
    if ($DayName != $row['DayName']) {
        $DayName  = $row['DayName'];
        echo "<br>\n" . $DayName . ": ";
    }
    echo $row['news_title'] . ", ";
}

10-02 20:21