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的了解还是太肤浅了,不怕被笑话,发出来让大家别犯同样的错误。。。。。。
FROM:http://blog.csdn.net/missyouzhang/article/details/5798458
select busstopName, count(distinct busstopName) from line_busstop group by busstopName
转载于:https://www.cnblogs.com/YananZ/p/3844278.html
MySQL去除查询结果重复值相关推荐
- mysql 查询不重复的值_在 MySQL 中查询不重复记录值的方法
使用 WordPress 的过程中,我一直很好奇 WordPress 的一个功能,大家都知道在 WordPress 的编写文章的时候,可以自定义栏目,而这个自定义栏目的数据保存到 wp_postmet ...
- Remove Duplicates from Sorted List 去除链表中重复值节点
Given a sorted linked list, delete all duplicates such that each element appear only once. For examp ...
- mysql搜索结果去重_MySQL去除查询结果重复
出现结果重复数SQL(四表关联): SELECT COUNT(post.ID ) FROM wp_posts AS post LEFT JOIN wp_term_relationships AS re ...
- mysql中筛选不重复值_MYSQL中筛选不重复记录值的示例
我的wordpress数据库中的wp_postmeta表都有10,000多行了,如果使用两次循环查找判断,虽然我们不累,但是程序运行很累啊. 如果我想用一条语句查询得到name不重复的所有数据,那就必 ...
- mysql三表查询数据重复_解决mybatis三表连接查询数据重复的问题
此问题的产生,主要是数据库的字段名一样导致 三张表 DOCTOR JOB OBJECT 有问题的查询语句和查询结果是: SELECT d.*,j.*,o.* from (select d.*,rown ...
- mysql联合查询数据重复_多表联合查询导致的数据重复问题
select id,like_count,favorite_count from message_message where id in(select message_id from message_ ...
- js去除数组中重复值
//第三种方法加强版 Array.prototype.distinct=function(){ var sameObj=function(a,b){ var tag = true; if(!a||!b ...
- php 去除重复的值,php数组怎么去除重复值?
PHP中可以使用array_unique()函数来去除数组的重复值:如果两个或更多个数组值相同,array_unique()函数只会保留第一个元素,其他的元素值会被删除:语法格式"array ...
- mysql去重查询只留一条最新的
mysql查询到时候如何去重(指定两个条件一样的数据) 可以使用groupby以dname分组 select*fromtablegroupbydname 这样不行,,因为我还有dname一样,,但是s ...
最新文章
- MyEclipse结合Git
- 还在使用 SimpleDateFormat?你的项目崩没?
- Web应用虚拟目录的映射的几种方式
- 写给MongoDB开发者的50条建议Tip6
- Kubernetes 网络概念及策略控制(叶磊)
- 什么是计算机领域的实时系统
- java无限循环可变参数,Java可变参数、加强for循环
- 我学Flash/Flex(2):AS3读取XML文件内容
- python 全部缩进一行_每天三分钟一起学python之(三)python的基本语法
- 通用mrp手机必备新手安装包
- 《人机交互技术》 第八章 移动界面设计
- 创造力对领导力的重要性_创造力是冒险的(领导者需要听到的其他真相)
- 10年日语营业转行IT从深圳到日本东京圈工作生活2019copy
- spring概念理解之IOC(控制反转)
- nginx反向代理文件下载失败
- oracle 正序 倒序 排列
- 魔兽重置版改键+喊话
- TCP3次握手为啥挥手却要4次,这下解释明白了
- Pytorch中transforms.Compose()的使用
- 2021江苏省南通市高考成绩查询时间,2021年江苏南通高考时间:6月7日至9日
热门文章
- Recovery 流程简介
- [BZOJ 2659] [Beijing wc2012] 算不出的算式
- Swift语言高速入门
- windows.open()参数列表
- Zend Studio 实用快捷键一览表
- python 报ImportError: Install xlrd = 1.0.0 for Excel support错误出现及其解决帮法
- Notepad++快速选中多行
- Docker基本命令入门
- kafka常见疑难问题
- hbuilderx制作简单网页_简单的手机网页制作教程