php - 帮助MYSQL查询使用PHP搭建博客存档导航菜单

标签 php mysql database

我正在构建一个博客存档导航菜单。目前我运行查询以获取所有年份和月份。然后我循环并运行以下查询以获取该年/月博客文章的所有 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/

相关文章:

php cli 不工作,找不到 pdo

mysql - Docker-compose + MariaDB + 4GB SQL 文件 = 极其缓慢的数据库导入

MySQL 性能较慢 *with* 索引?

database - 我应该使用 EBS 还是 S3 来存储我的数据库?

php - mysql group by and preferred field = 1 in join table

PHP将textarea文本插入数据库

javascript - 如何在php文件中追加数据

php - 从其他表 + Doctrine 查询

Mysql Unix-时间戳日期格式

mysql - 如何摆脱错误代码 1242