Dmi*_*riy 5 mysql rollup date coalesce
我遇到了 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 3
2016 2
NULL 5
Run Code Online (Sandbox Code Playgroud)
而不是预期的
Year Count
---- -----
2015 3
2016 2
moo 5
Run Code Online (Sandbox Code Playgroud)
有什么想法、建议吗?
如果您尝试定位NULL聚合汇总计算期间生成的 s(而不是NULL原始数据中的 s),那么您引用的是错误的NULLs。如果是这样,这可能就是您正在尝试做的事情:
SELECT
IFNULL(m.year, 'moo')
FROM
(SELECT
YEAR(date_time) AS 'year'
FROM
mytable
GROUP BY
year
WITH ROLLUP) m
Run Code Online (Sandbox Code Playgroud)
这是sqlfiddle。
| 归档时间: |
|
| 查看次数: |
3164 次 |
| 最近记录: |