问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...写SQL语句筛选掉重复的记录 不能使用Group by.请问高手怎么写啊...

发布网友 发布时间:2022-04-29 07:11

我来回答

5个回答

热心网友 时间:2022-04-11 16:57

在使用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之前,不然会报错,

热心网友 时间:2022-04-11 18:15

group by 是分类汇总 会自动提取不重复值的

热心网友 时间:2022-04-11 19:49

select distinct * from t1

热心网友 时间:2022-04-11 21:41

select distinct * from tbl

顺便问下,为什么不能用Group by

热心网友 时间:2022-04-11 23:49

select distinct(fieldname) from tablename
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
绩效工资从工资里扣合法吗 无人机电机轴的主要功能有哪些? 闽侯南通多久发展 南通哪个位置最有潜力 南通未来的机遇有哪些 江苏南通的发展前景怎么样 南通这座城市未来发展前景怎样 我女儿阳历08年01月08日出生,{农历07年腊月初一}请高人帮忙改个名字... 我女儿是2012年1月10日10:35分出生的五行缺什么,取什么名字好 这种图片效果怎么做出来的,不是纯白板,仔细看有一个个均匀分布的小圆点... 请问,如果患了前列腺炎会对性生活有影响吗?拜托各位大神 台式电脑网络连接正常但是上不了网 前列腺炎有没有可能引起性功能勃起障碍呢? 前列腺炎对性功能有那些影响 电脑网络连接已连接但上不去了网 男性轻度前列腺炎会影响性生活吗 前列腺炎会影响性生活吗 男人的前列腺炎影响性生活吗 什么胃病不能买保险! 前列腺炎会导致性功能下降吗? 求问患有哪些疾病是不能购买健康保险的? 检查出轻度的前列腺炎会对性功能有影响吗 前列腺炎对性生活有哪些影响 前列腺炎症对性功能有没有影响? 前列腺炎影响性能力吗 前列腺炎会影响性生活吗? 前列腺炎会影响到性功能吗 前列腺炎会引起性功能障碍吗 前列腺炎会引起性功能勃起障碍吗? 前列腺会影响性功能吗? 请教大家!mysql查询结果,过滤重复数据? 如何用distinct消除重复记录的同时又能选取多个字段值 谁介绍些男女合唱的歌曲,要流行音乐,网络歌手的也行 推荐几首男女合唱的流行歌曲? 介绍几首现在最流行的男女对唱的歌曲? 男女对唱的流行音乐有什么 现在有什么男女合唱最好听的歌 推荐一些男女合唱的歌,要流行的。越多越好。 适合男女合唱的流行歌曲 推荐一些好听的男女合唱歌 用长方形纸折的盒子,把盒子折叠后能成像信封的方法 长方体的纸盒子折法。 墙上的洞怎么补,墙上补洞都有哪些步骤 墙上的洞怎么补,墙上补洞都有哪些步骤? 墙洞怎么处理 墙洞如何修补 墙面烂洞如何修补? 如何修补墙上破洞 墙面钉子洞如何修复 我不小心把住家的墙上磕了一个小洞,用什么能补啊? 天快亮的时候天上最亮的那颗星星叫什么?