我有一个mysql表,其记录可以追溯到2006年到现在(以及正在进行中),所有记录都带有日期时间戳记
最简单/最简单的方法是提取所有YEARS并为每年(动态)制作分页链接? 像这样:2006 2007 2008 2009 2010 2011 2012
这不是太笨拙而且为这个简单的任务使用了太多的资源吗?:
@mysql_query("SELECT YEAR(date) AS yearonly FROM table GROUP BY yearonly");
答案 0 :(得分:3)
我认为你的解决方案没问题。
使用select distinct
是另一种可能性
SELECT DISTINCT YEAR(date) AS yearonly FROM table
答案 1 :(得分:1)
更简单的方法可以是:
您可以使用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
答案 2 :(得分:1)
这是正确的答案,不要忘记每年订购 为获得最佳性能,如果您有大型数据集,请在日期列上创建索引。
答案 3 :(得分:1)
为了提高效率而不是其他建议,并且无缘无故地避免在百万行表上进行完整的表扫描:
创建一个包含2006年至2050年(或任何您想要的)年份的表格。也许叫它years
?然后:
select *
from `years`
where `year` <= year(curdate())