創建/日期的選擇行使用下面的嵌套查詢SELECT ... UNION SELECT ...
我可以返回月/年的行過去6個月(含當月)動態在MySQL
SELECT month_year
FROM
(SELECT DATE_FORMAT(NOW(),'%M %Y') as month_year
UNION
SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH),'%M %Y')
UNION
SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 2 MONTH),'%M %Y')
UNION
SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 3 MONTH),'%M %Y')
UNION
SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 4 MONTH),'%M %Y')
UNION
SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 5 MONTH),'%M %Y')
) a
導致─
month_year
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
是否有可能重新創建此查詢,以便動態創建,即不必添加/刪除UNION SELECT ...
以獲取更多/更少的月/年行?
顯然,下面的查詢將不能工作,但有一些方法做一些喜歡 -
SELECT month_year
FROM
(SELECT DATE_FORMAT(`thisDate`,'%M %Y') as month_year WHERE `thisDate` BETWEEN NOW() AND DATE_SUB(NOW(), INTERVAL 5 MONTH) LIMIT 6
) a
,我只需要改變INTERVAL 5
和LIMIT 6
整數改變的行數返回。
應用
如果我有一個表sales
每行是在當天賣出金額。
date amount
2015-01-03 100
2015-01-10 50
2015-03-07 75
2015-03-14 60
2015-03-21 40
...
2014-10-31 125
現在我想要得到過去6個月的每月總計。如果我做一個標準的查詢,使用LIMIT 6
SELECT
DATE_FORMAT(date,'%M %Y') as month_year, SUM(amount)
FROM
sales
GROUP BY
month_year
LIMIT 6
我將結束與October 2014
因爲有來自April 2015
OR February 2015
沒有行。
所以我的想法是創建日期行的「臨時」表,然後LEFT JOIN
我sales
查詢 -
SELECT a.month_year, b.amount
FROM
(SELECT DATE_FORMAT(NOW(),'%M %Y') as month_year
UNION
SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH),'%M %Y')
UNION
SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 2 MONTH),'%M %Y')
UNION
SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 3 MONTH),'%M %Y')
UNION
SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 4 MONTH),'%M %Y')
UNION
SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 5 MONTH),'%M %Y')
) a
LEFT JOIN
(SELECT
DATE_FORMAT(date,'%M %Y') as month_year, SUM(amount)
FROM
sales
GROUP BY
month_year
) b
ON b.month_year = a.month_year
但是,如果我想換月至7,8,9或3,4,5我將不得不添加/刪除行,我希望能夠更改1或2個整數。
您能說您的使用有點?我的意思是,在一個日期字段上做一個組很簡單,而使用MySQL生成一堆沒有附加數據的月份會有點荒謬,所以這是一個可以在更多的上下文中得到更好回答的問題。 – 2015-04-02 21:39:00
https://dev.mysql.com/doc/refman/5.0/en/while.html – 2015-04-02 21:53:12
@JohnGreen我已更新我的問題與查詢的應用程序。 – Sean 2015-04-02 22:08:19