在mysql数据库的group by语句存在with rollup修饰语,使用with rollup修饰语可以在group by结果后面额外添加一行(该行内容中group by的列会返回一个NULL,其他列则返回相应的内容)。
group by .. with rollup的详细使用可以参考官方手册:http://dev.mysql.com/doc/refman/5.5/en/group-by-modifiers.html。为了详细讲解其使用,参考网上的例子进行演示:
(1)建一个简单的表并插入几条简单的数据
CREATE TABLE `t` ( `id` int(11) DEFAULT NULL, `id2` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=gbk insert into t value(11,11),(12,12),(13,13);
(2)先做一个简单的查询
select id,sum(id2),avg(id2) from t group by id with rollup;
我们可以看到,对于group by的列,with rollup将不会做任何的操作,而是返回一个NULL,而没有group by的列,则根据前面的avg函数和sum函数做了处理。
参考:http://ourmysql.com/archives/1144
——————————————————————————————————————–
有了上面针对group by xxx with rollup用法的详细介绍,来看《第二届北京网络安全技术大赛夺旗赛Writeup(Web安全篇)》中利用此用法来绕过登陆认证的案例。
本文隐藏内容 登陆 后才可以浏览