我遇到了MySQL的ROLLUP並處理生成的NULL的問題。 IFNULL/COALESCE函數適用於普通列,但在與日期函數一起使用時似乎會失效。例子如下:通過彙總,聚合/ ifnull和日期函數MySQL組
SELECT
YEAR(date_time) AS Year,
count(x) AS Count
FROM mytable
GROUP BY year WITH ROLLUP
返回(如預期)
Year Count
---- -----
2015 3
2016 2
NULL 5
當我查詢非日期列(VARCHAR,例如),我能夠處理NULL值通過使用IFNULL或COALESCE功能用字符串替換NULL值。但是,當我將相同的邏輯應用於上述查詢時,似乎不起作用。
SELECT
COALESCE(YEAR(date_time), 'moo') AS Year,
count(x) AS Count
FROM mytable
GROUP BY year WITH ROLLUP
或
SELECT
IFNULL(YEAR(date_time), 'moo') AS 'year',
count(x) AS Count
FROM mytable
GROUP BY year WITH ROLLUP
回報
Year Count
---- -----
2015 3
2016 2
NULL 5
,而不是預期的
Year Count
---- -----
2015 3
2016 2
moo 5
任何意見,建議?
這個問題對我來說毫無意義,因爲你實際上並沒有在滾動任何東西,因爲沒有聚合函數與'GROUP BY'一起使用。 –
僅僅因爲我已經將查詢減少到了最小值以得到我的問題的核心 –
然後,您應該顯示一個有代表性的示例。上面給出的內容沒有任何意義,因爲沒有彙總。 –