我正在构建一个博客存档导航菜单。目前我运行查询以获取所有年份和月份。然后我循环并运行以下查询以获取该年/月博客文章的所有 ID 和标题:
SELECT `id`, `title`
FROM `news`
WHERE YEAR(`date`) = "2010" AND MONTH(`date`) = "03"
ORDER BY `date` DESC
之后,为了计算当月的帖子数量,我运行了一个非常相似的查询:
SELECT COUNT(*) as `count`
FROM `news`
WHERE YEAR(`date`) = "2010" AND MONTH(`date`) = "03"
年和月当然是动态的。
有什么方法可以避免运行两个单独的查询吗?
提前致谢!
最佳答案
有什么问题:
SELECT `id`, `title`, count(*) AS `count`
FROM `news`
WHERE YEAR(`date`) = "2010" AND MONTH(`date`) = "03"
GROUP BY ( `id` ) #assuming id is unique
ORDER BY `date` DESC
?
编辑: 忘记添加 GROUP BY 子句
编辑 2: 忘记上面的。这显然是不正确的。这可以解决问题,尽管它可能被认为不是很优雅:
SELECT
`id`,
`title`,
( SELECT
count(*)
FROM
`news`
WHERE
YEAR(`date`) = "2010" AND
MONTH(`date`) = "01" ) as `count`
FROM
`news`
WHERE
YEAR(`date`) = "2010" AND
MONTH(`date`) = "01"
ORDER BY
`date` DESC
所以也许建议的 mysql_num_rows() 毕竟还不错。 :)
关于php - 帮助MYSQL查询使用PHP搭建博客存档导航菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2060569/