• 运用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的领会照样太浅陋了,不怕被笑话,收回来让年夜家别犯异常的错误。。。。。。




    版权声明: 原创作品,容许转载,转载时请务必以超链接方式标明文章 原始来由 、作者信息和本声明。否则将追究执法责任。

  • 相关阅读:
    Python selenium —— 一定要会用selenium的等待,三种等待方式解读
    python3 selenium 切换窗口的几种方法
    转:对UI自动化测试的一些感悟
    Docker
    【转】selenium之 定位以及切换frame
    selenium——键盘操作
    selenium——鼠标事件
    python 读取Excel表格方法
    springboot maven 更新jar包速度慢的问题
    Python3 读写utf-8文本文件
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1976006.html
Copyright © 2020-2023  润新知