小编Dmi*_*riy的帖子

MySQL group by 与 rollup、coalesce/ifnull 和日期函数

我遇到了 MySQL 的 ROLLUP 和处理结果 NULL 的问题。IFNULL/COALESCE 函数适用于普通列,但在与日期函数一起使用时似乎会崩溃。示例如下:

SELECT
    YEAR(date_time) AS Year,
    count(x) AS Count
FROM mytable
GROUP BY year WITH ROLLUP
Run Code Online (Sandbox Code Playgroud)

回报(如预期)

Year Count
---- -----
2015 3
2016 2
NULL 5
Run Code Online (Sandbox Code Playgroud)

当我查询非日期列(例如 varchar)时,我可以使用 IFNULL 或 COALESCE 函数将 NULL 值替换为字符串来处理 NULL 值。但是,当我将相同的逻辑应用于上述查询时,它似乎不起作用。

SELECT
    COALESCE(YEAR(date_time), 'moo') AS Year,
    count(x) AS Count
FROM mytable
GROUP BY year WITH ROLLUP
Run Code Online (Sandbox Code Playgroud)

或者

SELECT
    IFNULL(YEAR(date_time), 'moo') AS 'year',
    count(x) AS Count
FROM mytable
GROUP BY year WITH ROLLUP
Run Code Online (Sandbox Code Playgroud)

回报

Year Count
---- -----
2015 …
Run Code Online (Sandbox Code Playgroud)

mysql rollup date coalesce

5
推荐指数
1
解决办法
3164
查看次数

标签 统计

coalesce ×1

date ×1

mysql ×1

rollup ×1