我有記錄,從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