我是兼职摄影师的兼职设计师/开发人员。我有一个附有各种元数据的照片数据库。我想查询数据库并返回拍摄照片的年份列表,以及当年拍摄的照片数量。
简而言之,我想要一个如下所示的列表:
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)
我尝试了很多不同的语法,但此时我正在放弃并寻求帮助!
答案 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