MySQL日期查询仅返回一年,当存在多个时

时间:2010-04-19 18:39:33

标签: mysql date count

我是兼职摄影师的兼职设计师/开发人员。我有一个附有各种元数据的照片数据库。我想查询数据库并返回拍摄照片的年份列表,以及当年拍摄的照片数量。

简而言之,我想要一个如下所示的列表:

2010 (35 photos)
2009 (67 photos)
2008 (48 photos)

这是我正在使用的查询:

SELECT YEAR(date) AS year, COUNT(filename) as quantity FROM photos WHERE visible='1' GROUP BY 'year' ORDER BY 'year' DESC

不是生成所有可能的年份(数据库包括2010 - 2008年的照片),这是唯一的结果:

2010 (35 photos)

我尝试了很多不同的语法,但此时我正在放弃并寻求帮助!

2 个答案:

答案 0 :(得分:3)

不要单引year 这告诉MySQL year是一个字符串;它不是。

此外,请勿在{{1​​}}中使用别名。

试试这个:

GROUP BY

编辑:
在大多数RDBMS中,SELECT YEAR(date) AS year, COUNT(filename) as quantity FROM photos WHERE visible='1' GROUP BY YEAR(date) ORDER BY YEAR(date) DESC 子句最后被解释 因此,我们不能在该特定查询的其他子句中使用列别名。

答案 1 :(得分:0)

T-SQL解决方案:

SELECT 
   [text] = 
      cast(year(date) as varchar) + ' ('+cast(count(filename) as varchar) + 
      'photo'+case when count(filename)>1 then 's' else '' end + ')'
   ,
   [year] = year(date)
FROM photos 
WHERE  visible='1' 
GROUP BY YEAR(date)
ORDER BY YEAR(date) DESC