2012-08-22 27 views
1

我怎麼能在一個單一的查詢從一個時間戳列中選擇不同的年,這些年的不同個月以下在一個單一的查詢選擇不同的年代和月

我試圖select distinct year(sc_ts) as years from posts where user_id = 1 order by years asc我有點無法適應月份部分在那裏。或者這將需要兩個不同的語句和php處理。

我打算將其輸出作爲

2009 - Mar, Apr, May 
2010 - Apr, Jun, Jul 

"2009-03-22 16:07:48" 
"2009-04-22 16:07:48" 
"2009-05-22 16:07:48" 
"2010-04-22 16:07:48" 
"2010-06-22 16:07:48" 
"2010-07-22 16:07:48" 
"2011-01-22 16:07:48" 
"2011-02-22 16:07:48" 
"2011-05-22 16:07:48" 
"2011-06-22 16:07:48" 
"2011-08-22 16:07:48" 
"2012-01-22 16:07:48" 
"2012-02-22 16:07:48" 
"2012-03-22 16:07:48" 
"2012-04-22 16:07:48" 
"2012-08-22 16:07:48" 

回答

2
SELECT x.`Year`, GROUP_CONCAT(x.`Month`) AS Months 
FROM 
    (
     SELECT DISTINCT YEAR(sc_ts) AS `Year`, MONTHNAME(sc_ts) AS `Month` 
     FROM 
      `posts` 
     WHERE 
      user_id = 1 
     ORDER BY 
      MONTH(sc_ts) 
    ) x 
GROUP BY 
    x.`Year` 
ORDER BY 
    x.`Year` 
+1

+1擊敗我的子查詢:) – Fluffeh

+0

耶穌...什麼查詢:)我什至不知道這樣的東西(子查詢)可能。今晚我得看看這個。順便說一下,這是100%的工作。謝謝 – Norman

4
select distinct year(sc_ts) as years, group_concat(monthname(sc_ts)) as months from posts where user_id = 1 order by years asc 

編輯:我用month()原來,這給了一個月數,使用monthname()返回月份,而不是名字。

+0

這附近,但事情是它會給你一年,這些年的所有月份2009年,三月,四月,五月,四月,六月,七月,一月,二月,五月,六月,八月,一月,二月,三月,四月,八月 – Norman

0

嘗試SELECT distinct SUBSTRING(year(sc_ts), 6)

相關問題