我有一个表格,其中包含一个名为/ datetime
的字段,可以说是一年。以下查询为我提供了这一年内所有不同的月份数:
SELECT month(datetime)
FROM foo
GROUP BY month(datetime);
所以我们假设查询返回两行,包括1月和11月。可以/我如何操纵此查询以获得缺失的月份(2月 - 10月和12月)?
答案 0 :(得分:0)
你可以试试这个......不确定这是你要找的那个。
SELECT DISTINCT MonthName FROM
(
SELECT MONTHNAME(STR_TO_DATE(1, '%M')) AS MONTHNAME
UNION
SELECT MONTHNAME(STR_TO_DATE(2, '%M'))
UNION
SELECT MONTHNAME(STR_TO_DATE(3, '%M'))
UNION
SELECT MONTHNAME(STR_TO_DATE(4, '%M'))
UNION
SELECT MONTHNAME(STR_TO_DATE(5, '%M'))
UNION
SELECT MONTHNAME(STR_TO_DATE(6, '%M'))
UNION
SELECT MONTHNAME(STR_TO_DATE(7, '%M'))
UNION
SELECT MONTHNAME(STR_TO_DATE(8, '%M'))
UNION
SELECT MONTHNAME(STR_TO_DATE(9, '%M'))
UNION
SELECT MONTHNAME(STR_TO_DATE(10, '%M'))
UNION
SELECT MONTHNAME(STR_TO_DATE(11, '%M'))
UNION
SELECT MONTHNAME(STR_TO_DATE(12, '%M'))
) AS allMonths
LEFT JOIN
foo ON MONTHNAME(STR_TO_DATE(month(datetime), '%m')) = allMonths.MonthName
WHERE foo.datetime is null