mysql rollup问题

MySql 码拜 8年前 (2016-06-04) 1029次浏览
create table a ( i int );
insert into a values(null),(1);
mysql> select ifnull(i,2) from a group by ( ifnull(i,2) ) with rollup;
+–+
| ifnull(i,2) |
+–+
|           1 |
|           2 |
|        NULL |
+–+
3 rows in set (0.00 sec)
mysql> select ifnull(i,2) is null from a group by ( ifnull(i,2) ) with rollup;
+–+
| ifnull(i,2) is null |
+–+
|                   0 |
|                   0 |
|                   0 |   /////////////////这里, oracle返回1
+–+
3 rows in set (0.00 sec)
解决方案

40

这里面还涉及一个表达 式重用的问题
假如你改成 group by i, 你会发现结果 都是0,这是原因是select 结果之前都不会用到相关的表达式,自然也不存在重用的问题,所以 ifnull(i,2) is null 在结果中生成

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mysql rollup问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)