【发布时间】:2012-02-18 10:17:47
【问题描述】:
我正在尝试从 MySQL 数据库中获取一些行,并按发布日期对它们进行分组。
最终结果我想要以下..
星期一 -第1条 -第2条 -第3条
星期二 -第1条 -第2条
星期三 -第1条 -第2条 - 第 3 条 -第四条
等等,我不确定这是否可以在没有 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
谢谢。
【问题讨论】:
-
去掉 GROUP BY 前的逗号,查询就会生效。
-
此查询将只给出每天匹配的第一行。
GROUP_CONCAT()是可行的,但结果不容易重用。为什么不能用php? -
你应该通过 PHP 来完成。大多数仅 MySQL 的解决方案将使用
GROUP_CONCAT()函数,该函数将列的大小限制为 1KB。如果您有几十篇文章,则此类查询不会为您提供完整的图片。 -
@SalmanA 也适用于
GROUP_CONCAT()的大小限制
标签: php mysql group-by timestamp aggregate-functions