with rollup mysql_MySQL group by with rollup的用法

有一位同学通过askdba来询问with rollup的用法

(2012-02-01 15:08:22):

mysql中有这种用法select … from table_name group by a with rollup

“with rollup”是什么意思呢?

GROUP BY Modifiers  官方手册里面对这个rollup有一个专门的页面介绍 地址在这里,说得非常详细,我这里做一个简单的例子重现

建一个简单的表并插入几条简单的数据

CREATE TABLE `t` (

`id` int(11) DEFAULT NULL,

`id2` int(11) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=gbk

insert into t valeu(11,11),(12,12),(13,13);

先来做一个查询

root@test 03:44:32>select id,sum(id2),avg(id2) from t group by id with rollup;

+——+———-+———-+

| id | sum(id2) | avg(id2) |

+——+———-+———-+

| 11 | 11 | 11.0000 |

| 12 | 12 | 12.0000 |

| 13 | 13 | 13.0000 |

| NULL | 36 | 12.0000 |

+——+———-+———-+

4 rows in set (0.00 sec)

我们可以看到,对于group by的列,with rollup将不会做任何的操作,而是返回一个NULL,而没有group by的列,则根据前面的avg函数和sum函数做了处理。

再来看另外一个语句,只对一个列做avg

root@test 03:44:36>select id,avg(id2) from t group by id with rollup;

+——+———-+

| id | avg(id2) |

+——+———-+

| 11 | 11.0000 |

| 12 | 12.0000 |

| 13 | 13.0000 |

| NULL | 12.0000 |

+——+———-+

4 rows in set (0.00 sec)

以前从没留意到有这种用法,这次长见识了。

觉得文章有用?立即:

和朋友一起 共学习 共进步!

猜您喜欢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值