解析mysql不重复字段值求和

本篇文章是对关于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

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之前,不然会报错,差不多了,我继续忙碌。。。。。。

解析mysql不重复字段值求和相关推荐

  1. Mysql查询某字段值重复的数据个数

    说明:表:survey_consumer,字段:province ,统计字段:count 语句说明:查询出survey_consumer表中province字段两个及以上相同的数据(没有重复的数据不会 ...

  2. MySQL查询重复字段,及删除重复记录的方法

    MySQL查询重复字段,及删除重复记录的方法(转) Submitted by wiley on Thu, 09/03/2009 - 09:36 [教学] MySQL查询重复字段,及删除重复记录的方法 ...

  3. mysql 查询相同字段值的个数_好文 | MySQL 索引B+树原理,以及建索引的几大原则...

    MySQL事实上使用不同的存储引擎也是有很大区别的,下面猿友们可以了解一下. 一.存储引擎的比较 注:上面提到的B树索引并没有指出是B-Tree和B+Tree索引,但是B-树和B+树的定义是有区别的. ...

  4. mysql orderby 指定值_首先在MySQL中指定字段值ORDER BY

    要先在MySQL中按特定字段值排序,请使用ORDER BY FIELD().让我们首先创建一个表-mysql> create table DemoTable849(Color varchar(1 ...

  5. java异步判断数据库是否有重复字段值

    action: public String findusergroupyname(){ 集合 = 方法(字段值);   if(this.usergrouplst!=null&&this ...

  6. mysql复制一个字段值到另一个字段,MySQL怎么把表中一个字段数据复制到另外一个表的某个字段下...

    点击查看MySQL怎么把表中一个字段数据复制到另外一个表的某个字段下具体信息 答:update b set tel =(select mobile from a where a.id=b.aid) 注 ...

  7. mysql 查询重复字段统计重复个数和删除重复字段的重复数据

    假设我们有表A 里面有字段  field 里面有很多重复数据. 现在需要查询当前字段重复的个数 mysql>select filed ,count(*) as total from A grou ...

  8. mysql实现取字段值中某个字符之前的值

    例如字符串 abc/def/gh/ijk 取最后一个/之前的值即abc/def/gh 实现函数:substring_index.length.replace select substring_inde ...

  9. mysql查询条件字段值末尾有空格的问题

    mark MYSQL的binary解决mysql数据大小写敏感问题的方法 转载于:https://www.cnblogs.com/tuhooo/p/8466175.html

最新文章

  1. linux串口驱动分析【转】
  2. 分库分表这样玩,可以永不迁移数据、避免热点
  3. vue main.js中引入js_web前端的同学不容错过,大厂Vue最佳实践总结,提高竞争力...
  4. umi脚手架搭建的项目_还在从零开始搭建项目?手撸了款快速开发脚手架!
  5. 线性表:5.约瑟夫环,循环链表及其C语言实现
  6. 目前效果最好、应用较广且比较成熟的语音识别模型是什么?
  7. 网页输入数据到mysql_为什么用PHP编写的网页中,输入的数据不能插入到Mysql数据库中?...
  8. Unix/Linux shell脚本编程学习--Shell Script II
  9. 这么好的课程,竟然免费!!!
  10. python设置excel的格式_python 操作Excel 设置格式
  11. C# 解密微信步数 报错“填充无效,无法被移除。”
  12. 格兰因果模型可以分析哪些东西_论文实证经验分享|VAR模型实操步骤(上)
  13. lucene索引源码分析1
  14. pycharm新建python文件快捷键_Pycharm快捷键
  15. Katana 项目入门
  16. 多目标优化 MOP (二):遗传算法 SPEA2 2001
  17. Windows上python读取grib2文件(不用Linux)
  18. 压缩解压:tar zip unzip 7z|7za rar
  19. 网络游戏服务器架构设计
  20. jvm-014(张龙老师jvm教程) ClassLoader 源码doc文档及数组类加载器

热门文章

  1. tyvj p1030 乳草的入侵
  2. 数字图像处理 图像对比度增强算法概览
  3. centos下安装mysql选什么版本_CentOS 7 安装MySQL 5.7 或安装指定版本MySQL-Go语言中文社区...
  4. asterisk 数据库 php,使用FreePBX和Asterisk调用PHP脚本
  5. 多级队列调度算法可视化界面_操作系统:多级反馈队列调度算法模拟(Java实现)...
  6. MATLAB画出信号的连续幅度和相位谱
  7. MYSQL 三元 函数
  8. 微信公众平台实现音乐点播(PHP版)
  9. python中的复数
  10. Arcgis统计每个对应的点数量