比如
XM  ,XB ,ZJHM
张三  男   112233
张三  男   112244
李四  男   112233需要写SQL把重复的删除,比如筛选完是
张三  男   112233
张三  男   112244
不用管 是张三还是李四那条,只要去掉一个或者多个重复的即可
用distinct 只能是所有字段都匹配才行,还有什么好办法呢?

解决方案 »

  1.   

    是要去掉ZJHM这列的值重复的数据吗?
      

  2.   

    select zjhm from table group by zjhm having count(zjhm)>1
      

  3.   

    你是呀删除重复列还是找出重复列。找出按楼上的来,稍微改下就可以用。删除是
     delete t where t.rowid not in (select min(rowid) from t group by XM  ,XB ,ZJHM)
      

  4.   


    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) 
      

  5.   

    方法很多啊,分析函数也可以select XM, XB, ZJHM
      from (select t.*, row_number() over(partition by zjhm order by rownum) rn
              from t)
     where rn = 1