字段id 字段a 字段b 字 段c
1 5 13:50 wea
2 6 11:50 wdd
3 5 15:30 eaaa
**我想得到的数据是:
2 6 11:50 wdd
3 5 15:30 eaaa
**
这不是去重问题,这是选出时间最近的一个(也就是时间值最大的MAX(字段b))
分一下组,然后取时间最大的就行
SQL语句较复杂:
select *
from message t1
where exists
(select (1) from message t2 group by t2.字段a having count(1) > 1
and t1.id in (select max(t3.create_time) from message t3 group by t3.字段a having count(1) > 1))
or t1.字段a in (select t4.字段a from message t4 group by t4.字段a having count(1) = 1);
select * from message
where (a,b) in
(select a,max(b) from message
group by a)
不知道这样是否符合你的需求
可以用oracle里面的分析函数row_number()over()
select id,a,b,c from (
select id,a,b,c,row_number()over(partition by a order by b desc) RN
from message)
where RN=1;
delete from message where rowid not in(
select max(rowid) from message where create_time =(select max(create) from message) group by a,b,c
having count(1)>=1)