zoukankan      html  css  js  c++  java
  • 使用distinct在mysql中查询多条不重复记载值的处理责罚步调

      起原:网海拾贝




    在使用mysql时,偶然需求查询出某个字段不重复的记载,虽然mysql供应有distinct这个枢纽字来过滤失多余的重复记载只保管一条,但平时只用它来前往不重复记载的条数,而不是用它来前往不重记载的统统值。其缘由是distinct只能前往它的目的字段,而无法前往其余字段,这个标题让我困扰了好久,用distinct不能处理责罚的话,我只有效二重轮回查询来处理责罚,而如许关于一个数据量异常大的站来说,无疑是会间接影响到服从的。所以我花了许多年光来研讨这个标题,网上也查不到处理责罚方案,时期把容容拉来搀扶帮忙,成效是我们两人都担心了。。。。。。。。。

    下面先来看看例子:

        table
      id name
      1 a
      2 b
      3 c
      4 c
      5 b

    库布局约莫如许,这只是一个庞大的例子,理论状况会庞大得多。

    好比我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去失多余的重复记载。

    select distinct name from table
    得到的成效是:

      name
      a
      b
      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条件里?能,仍是报错。。。。。。。

    很贫苦吧?其实其实,费经心思都没能处理责罚这个标题。没步调,担任找人问。

    拉住公司里一JAVA步调员,他给我演示了oracle里使用distinct之后,也没找到mysql里的处理责罚方案,最后下班之前他倡议我尝尝group by。

    试了半天,也弗成,最后在mysql手册里找到一个用法,用group_concat(distinct name)配合group by name完成了我所需求的成效,高兴,天助我也,从速尝尝。

    报错。。。。。。。。。。。。担心。。。。。。。连mysql手册也跟我过不去,先给了我希望,然后又把我推向败兴,好狠哪。。。。

    再仔细一查,group_concat函数是4.1支撑,晕,我4.0的。没步调,晋级,升完级一试,成功。。。。。。

    终于搞定了,不过如许一来,又必需求求客户也晋级了。

    忽然灵机一闪,既然可以使用group_concat函数,那其余函数能行吗?

    从速用count函数一试,成功,我。。。。。。。想哭啊,费了这么多年光。。。。。。。。原来就这么庞大。。。。。。

    如今将完备语句放出:

    select *, count(distinct name) from table group by name

    成效:

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

    最后一项是多余的,不必管就行了,目的到达。。。。。

    唉,原来mysql这么笨,寂静一下就把他骗过来了,担心也就我吧(对了,还有容容那家伙),如今拿出来希望人人不要被这标题折腾。

    哦,对,再趁便说一句,group by 必须放在 order by 和 limit之前,不然会报错,差未几了,发给容容放网站上去,我担任忙碌。。。。。。

    -----------------------------------------------------------------------------------------


    更担心的事项发生了,在准备提交时容容发现,有更庞大的处理责罚要领。。。。。。

    select id, name from table group by name

    看来对mysql的相识照旧太浅薄了,不怕被笑话,收归来回头让人人别犯异样的错误。。。。。。




    版权声明: 原创作品,答应转载,转载时请务必以超链接情势标明文章 原始来由 、作者信息和本声明。不然将清查法律责任。

  • 相关阅读:
    C/C++的区别
    stm32之UCOS-III
    PID控制及整定算法
    PCB设计基础及技巧
    电路的一些基本理论
    stm32与三菱PLC通信
    stm32之外设控制
    stm32之内部功能
    JavaScript数组方法详解
    git新建关联克隆仓库指令
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1976715.html
Copyright © 2011-2022 走看看