首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

怎么只根据一个字段筛选出重复数据

2013-08-01 
如何只根据一个字段筛选出重复数据?比如XM,XB ,ZJHM张三男112233张三男112244李四男112233需要写SQL把重复

如何只根据一个字段筛选出重复数据?
比如
XM  ,XB ,ZJHM
张三  男   112233
张三  男   112244
李四  男   112233

需要写SQL把重复的删除,比如筛选完是
张三  男   112233
张三  男   112244
不用管 是张三还是李四那条,只要去掉一个或者多个重复的即可
用distinct 只能是所有字段都匹配才行,还有什么好办法呢?
[解决办法]
是要去掉ZJHM这列的值重复的数据吗?
[解决办法]
select zjhm from table group by zjhm having count(zjhm)>1
[解决办法]
你是呀删除重复列还是找出重复列。找出按楼上的来,稍微改下就可以用。删除是
 delete t where t.rowid not in (select min(rowid) from t group by XM  ,XB ,ZJHM)
[解决办法]


WITH test AS
(SELECT'张三' xm  ,'男'  xb,  '112233' ZJHM FROM dual UNION ALL
SELECT '张三' , '男'  , '112244' FROM dual UNION ALL
SELECT '李四' , '男' ,  '112233' FROM dual )
SELECT * FROM test t WHERE ROWNUM=(SELECT MAX(ROWNUM) FROM test k WHERE k.zjhm=t.zjhm) 

[解决办法]
方法很多啊,分析函数也可以

select XM, XB, ZJHM
  from (select t.*, row_number() over(partition by zjhm order by rownum) rn
          from t)
 where rn = 1

热点排行