专栏名称: java一日一条
主要是讲解编程语言java,并且每天都推送一条关于java编程语言的信息
目录
相关文章推荐
51好读  ›  专栏  ›  java一日一条

在工作中常用到的SQL

java一日一条  · 公众号  · Java  · 2019-11-04 17:23

正文

请到「今天看啥」查看全文



group by规则


因为,我们对数据进行了分组查询,数据的分布情况,我们是不关心的。


记住:先分组,后统计(先把数据归类后,再对相同的数据进行统计)


1.3 group查询最常用的SQL


去重是我们经常会遇到的问题,打个比方说,由于各种原因(不管是业务上还是说是脏数据),现在我有两条重复的数据(除了ID,其余的字段都是相同的):


重复的数据


我这边只希望留下某一条记录作为查询结果就好了,我们可以写下以下的SQL:


select * from user where id in(
   select min(idfrom user where name = 'Java3y' and pv = 20 and time='7-25' group by name,pv,time;
)


上面这条SQL是非常非常实用的,除了我说的去重以外,其实我们可以再”思考“一下:


上面已经说了,使用group by分组统计之后,我们的select 后面只能跟着group by 的字段,或者是聚合函数。


很多时候我们group by了以后,还想要查询结果中包含group by之外的字段(一般情况下,我们都不可能将group by 涵盖所有的字段),我们就可以上面那样,将查询后的结果作为子查询,放在外部查询的where 子句后,这样外部查询是可以select 出其他字段的。


(SQL写得比较少的朋友可能没什么感触啊,但我希望上面那种写法大家能够记住,以后一定会遇到类似的情况的)


二、回顾join查询


join查询不知道大家在刚学的时候是怎么理解的,反正我当初好像就挺迷迷糊糊的。我觉得join查询可以简单理解成这样:我想要的查询结果,一张表搞不掂,那我就join另一张表


比如说,现在我有两张的表:


第一张表
第二张表


现在我想知道在7月25号时:每个公众号的点击量、公众号名称、号主名称、公众号的创建日期


显然,我们会发现一张表搞不掂啊,某些数据要依赖于另一张表才能把数据"完整"展示出来


那join其实就是把两张表合起来的一个操作:


join其实就是一个合并的操作


两张表合并起来以后我们就会发现,这张“大表”就含有这两张表的所有字段啦,那我想要什么都有了!


值得注意的是:在join的时候,会产生笛卡尔积(至于什么是笛卡尔积我这里就不说了,反正我们要记住的是join表时一定要写关联条件去除笛卡尔积)







请到「今天看啥」查看全文