这个重复怎么取去除,不是所有字段重复的哦
这个重复怎么取去除只留一条呢,不是所有字段重复的哦
create table (aa varchar2(20) primary key,bb varchar2(20),cc varchar2(20),);insert into tableselect '001','小明','xiaoming@d.com' from dualunion allselect '010','小明','xiaoming@d.com' from dualunion allselect '002','小红','xiaohong@d.com' from dualunion allselect '022','小红','xiaohong@d.com' from dualunion allselect '301','小明','xiaoming@d.com' from dual
select distinct bb,cc from t;
[解决办法]
WITH t AS(select '001' a,'小明' b,'xiaoming@d.com' c from dualunion allselect '010','小明','xiaoming@d.com' from dualunion allselect '002','小红','xiaohong@d.com' from dualunion allselect '022','小红','xiaohong@d.com' from dualunion allselect '301','小明','xiaoming@d.com' from dual)1.SELECT distinct b,c from t;2.SELECT MIN(b),MIN(c) FROM t GROUP BY b,c;3.SELECT b,cFROM (SELECT b,c,row_number() over(PARTITION BY b,c ORDER BY b,c)rn FROM t) WHERE rn=1--你自己挑吧!
[解决办法]
select * from tab1 t where (t.bb, t.cc) in (select bb, cc from tab1 group by bb, cc having count(*) > 1) and rowid in (select min(rowid) from tab1 group by bb,cc having count(*) > 1);
[解决办法]
实测成功:
create table T19( aa varchar2(20) primary key, bb varchar2(20), cc varchar2(20));insert into TABLESELECT MAX(NAME), MAX(Email) FROM (select '001' ID, '小明' NAME,'xiaoming@d.com' Email from dualunion allselect '010' ID,'小明' NAME,'xiaoming@d.com' Email from dualunion allselect '002' ID,'小红' NAME,'xiaohong@d.com' Email from dualunion allselect '022' ID,'小红' NAME,'xiaohong@d.com' Email from dualunion allselect '301' ID,'小明' NAME,'xiaoming@d.com' Email from dual)GROUP BY NAME, Email;