Mysql GROUP BY NULL
来源:互联网 发布:公司封了游戏端口 编辑:程序博客网 时间:2024/06/05 05:27
最近在Mysql发现一个问题,当我们如果使用GROUP BY如果出现NULL值,MYSQL会怎样处理。而且如果我需要把每个NULL值都打印出来而不是分组,那该怎么办?
下面我们做个试验:
CREATE TABLE IF NOT EXISTS A(id INT PRIMARY KEY AUTO_INCREMENT ,NAME VARCHAR(10)) ;CREATE TABLE IF NOT EXISTS B(id INT PRIMARY KEY AUTO_INCREMENT ,NAME VARCHAR(10) ,aid INT NOT NULL) ;INSERT INTO A(NAME) VALUES('a') ;INSERT INTO A(NAME) VALUES('a') ;INSERT INTO A(NAME) VALUES('a') ;INSERT INTO A(NAME) VALUES('a') ;INSERT INTO A(NAME) VALUES('b') ;INSERT INTO A(NAME) VALUES('b') ;INSERT INTO A(NAME) VALUES('a') ;INSERT INTO A(NAME) VALUES('a') ;INSERT INTO A(NAME) VALUES('b') ;INSERT INTO A(NAME) VALUES('a') ;INSERT INTO A(NAME) VALUES('b') ;INSERT INTO A(NAME) VALUES('a') ;INSERT INTO B(NAME ,aid) VALUES('d' , 3) ;INSERT INTO B(NAME ,aid) VALUES('f' , 5) ;INSERT INTO B(NAME ,aid) VALUES('f' , 6) ;INSERT INTO B(NAME ,aid) VALUES('f' , 7) ;INSERT INTO B(NAME ,aid) VALUES('d' , 8) ;
结果:
我们用GROUP BY 在A表查询,以name作为分组,比如:
SELECT a.name FROM A GROUP BY a.`name` ;
结果:
然后我们使用连接查询:
SELECT a.id ,a.name ,b.name FROM A a LEFT JOIN B bON(a.id = b.aid) ;
结果:
但我们现在需要用GROUP对上面的进行查询:
SELECT a.id ,a.name ,b.name FROM A a LEFT JOIN B bON(a.id = b.aid) GROUP BY b.name;
结果
从上面可以看出,当group by这列有null值时,group会把他们当成是同一个直接聚合。
但我现在需要把b.name=NULL的情况都查询出来,而不是聚合,那么怎么办?
后来在网上:http://stackoverflow.com/questions/4588935/group-by-do-not-group-null找到了方法。
我们可以使用一个UUID来对null值进行转换,这样每个b.name=null的行都会被查询出来而不是被分到同一组。
对于UUID我们可以查询MYSQL的技术文档http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid
下面来尝试下:
#--增加一个UUID(),把b.name的NULL的值都转化为具有专一性的uuid,这样每个b.name都会不同,GROUP就不会对他们进行分组SELECT a.id ,a.name ,b.name FROM A a LEFT JOIN B bON(a.id = b.aid) GROUP BY IFNULL(b.name,UUID());
运行结果:
这样可以实现Mysql Group by NULL值。
0 0
- Mysql GROUP BY NULL
- 【mysql】 GROUP BY col ORDER BY NULL
- mysql中的group by
- mysql group by
- mysql中的group by
- Mysql 的 Group by
- mysql group by优化
- mysql group by 原理
- Mysql值group by
- Mysql group by 详解
- mysql group by用法
- mysql group by
- mysql之GROUP BY
- mysql group by
- mysql group by用法
- mysql group by
- mysql group by......
- mysql group by
- 家电业探寻进化虫洞 长虹信息化武装一马当先
- 关于在IE6和IE8下获取Excel2007的ContectType不同的问题
- Android Afinal框架学习(一) FinalDb 数据库操作
- 三种将List转换成Map的方法
- Ubuntu(pc)中部署boa服务器
- Mysql GROUP BY NULL
- php学习笔记(八)数组
- 经典API记载
- 怎样求FIRST集与FOLLOW集
- Xcode方法提示不显示的解决办法
- jvm 性能分析值 visual vm 以及 jhat、mat使用
- 设计模式大集锦 程序员面试全攻略
- Linux多线程中的信号
- C#Random随机数