left join和group以及一些统计函数的探讨

关于left join

      数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。

      在使用left jion时,on和where条件的区别如下:

1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真(但是关联的其他表格的数据会为null),都会返回左边表中的记录。

2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。


关于group by

        我在我另一篇文章中说道过,关于mysql分组。


关于函数分组

        gorup by得到的是一个分组后的数据,要对分组后的数据进行统计可以使用having进行条件过滤。一个sum,avg,count等统计的函数天生就是结合group,by进行统计的,他统计的就是分组后的数据结果集。如果没有进行分组就使用sum,avg,count等聚合函数,他统计的就是认为该查出来的就是分组数据。如果要同分组后,统计分组结果集,适当的使用子查询也是可以的,此时就是统计的没有分组后的函数了。


        

没有更多推荐了,返回首页