sql查询中如何去除某个字段重复的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql查询中如何去除某个字段重复的数据相关的知识,希望对你有一定的参考价值。
你如果想的是:只要有'理解'两个字的就把这条记录删除,那么就按照一楼的做。如果只是想去掉'理解'两个字,其余的内容都要保留,那我建议你将数据卸载为纯粹的文本文件,然后用一个文本编辑器,比如notepad,通过它的查找、替换,一下子就完成了,非常简单。单个sql语句,似乎没有能力将字段里面的某些内容去掉。除非写成过程,逐记录分析。 参考技术A 我一般用这个:
假设怀疑重复的字段名为SeriNo,
select
*
from
[tablename]
group
by
SeriNo
having
count(SeriNo)<>1
oracle查询结果如果某个字段重复的时候就取另一个字段值最小的数据
如表a数据信息如下:
Id name Results
1 karl 85
2 ramon 90
3 karl 93
4 ramon 95
如果name相同的时候 取Results 最大的数据
如图所示的最后的结果应该是
Id name Results
1 karl 93
2 ramon 95
本来想多悬赏点分数,奈何没有那么多的资本 请各位多多帮助
多谢两位,我把自己写的sql语句和产生结果贴上去 期望大家能帮助我解决,解决的话 我会多给分的.具体的代码和产生结果的截图请查看图片,有问题不明白请QQ联系我:308948501 添加好友时请说明是百度知道帮组解决问题的朋友.再次感谢
GROUP BY A.NAME;
就是这么简单! 参考技术B select rownum,a.* from select (name, max(results) from table_a group by name order by name) a;追问
我把sql语句和产生结果的截图给你请你帮忙看下 谢谢. 或者能告诉我你的qq 我们在线说.
追答你这个要用到row_number()函数,语法是row_number() over(partition by 报修单号 order by 到修时间)。用这个函数可以按照报修单号分组,每组中按照到修时间排序并分配一个序号。想要最小的就取序号是1的,想要最大的就row_number() over(partition by 报修单号 order by 到修时间 desc)取序号是1的。
举例:
select 报修单号, 到修时间 from (select 报修单号, 到修时间, row_number() over(partition by 报修单号 order by 到修时间) rn from table_name) where rn=1 order by 报修单号;
可以根据需要加上desc或者不加。
以上是关于sql查询中如何去除某个字段重复的数据的主要内容,如果未能解决你的问题,请参考以下文章