您当前位置:主页 > 热门文章 >
 
sql之distinct语句
日期:2018-11-10 编辑:admin

sql之distinct语句   distinct这个关键字用来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。    -    下面先来看看例子:  table表  字段1     字段2     id        name     1           a     2           b     3           c     4           c     5           b  库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。  比如我想用一条语句查询得到name不重复的所有数据,那就必须  使用distinct去掉多余的重复记录。 

select distinct name from table 

 

得到的结果是:   ----------   name     a       c  好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧: 
select distinct name, id from table 

 

结果会是:  ----------   id name     1 a     2 b     3 c     4 c     5 b  distinct怎么没起作用?作用是起了的,不过他同时作用了两个  字段,也就是必须得id与name都相同的才会被排除  我们再改改查询语句: 
select id, distinct name from table 

 

很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。  --------------------------------------------------------  下面方法可行: 
select *, count(distinct name) from table group by name 

 

结果: 
   id name count(distinct name) 
   1 a 1 
   2 b 1 
   3 c 1 

 

最后一项是多余的,不用管就行了,目的达到  group by 必须放在 order by 和 limit之前,不然会报错 

http://www.bkjia.com/oracle/480460.htmlwww.bkjia.comtruehttp://www.bkjia.com/oracle/480460.htmlTechArticlesql之distinct语句 distinct这个关键字用来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重...

本文源自: AG环亚娱乐

上一篇:将mysql转换到oracle必须了解的50件事 下一篇:没有了
 
Copyright © 2005-2016 http://www.tecsquared.com AG环亚娱乐_AG直营网_环亚娱乐AG最佳线路_腾讯体育版权所有 AG环亚娱乐_AG直营网_环亚娱乐AG最佳线路_腾讯体育