我有记录,从2006年约会到现在(和正在进行的)一个MySQL表,所有的日期时间邮票从MySQL(分页)选择年
什么是只能提取所有年份,并作出最明智的/最简单的方法每年的分页链接(动态)? 像这样:2006 2007 2008 2009 2010 2011 2012
这不是太笨拙和使用了过多的资源,对于简单的任务?:
@mysql_query("SELECT YEAR(date) AS yearonly FROM table GROUP BY yearonly");
我有记录,从2006年约会到现在(和正在进行的)一个MySQL表,所有的日期时间邮票从MySQL(分页)选择年
什么是只能提取所有年份,并作出最明智的/最简单的方法每年的分页链接(动态)? 像这样:2006 2007 2008 2009 2010 2011 2012
这不是太笨拙和使用了过多的资源,对于简单的任务?:
@mysql_query("SELECT YEAR(date) AS yearonly FROM table GROUP BY yearonly");
我认为您的解决方案是确定。
使用select distinct
是另一种可能性
SELECT DISTINCT YEAR(date) AS yearonly FROM table
更简单的方法可以是:
你可以使用group_concat()
获得一次性
SELECT group_concat(YEAR(date),SEPARATOR '') AS years FROM table GROUP BY YEAR(date)
OR
SELECT distinct YEAR(date,4) AS yearonly FROM table
OR
SELECT distinct LEFT(date,4) AS yearonly FROM table
这是正确的答案,只是不要忘记ORDER BY yearonly。
为获得最佳性能,如果您有大型数据集,请在日期列上创建一个索引。
在过去的其他建议效率并避免上万行的表无故全表扫描:
从2006年创建所有年份的表格2050(或者只要你想)。也许叫它years
?然后:
select *
from `years`
where `year` <= year(curdate())
非常感谢你:) – mowgli 2012-03-31 18:11:20