sql - How do I delete one row for two duplicate entries in a postgres table? -
the 2 rows have same columns except timestamp column - created_at
i want retain 1 of these rows - doesn't matter which.
this how able select 1 of each of these duplicate rows can delete on basis of created_at column has lesser value.
select e.id, e.user_id, e.r_needed, e.match, e.status, e.stage, e.created_at employee e, employee e2 e.id=e2.id , e.user_id=e2.user_id , e.status = 12 , e2.status=12 , e.stage=false , e2.stage=false , e.match=true , e2.match=true , e.user_id=12 , e.r_needed=true , e2.r_needed=true , e.created_at<e2.created_at , date(e.created_at)='2015-10-08';
however, cannot figure how can delete row such both of duplicates not deleted , ones selected above do?
basically, want delete rows match columns in select query above , row has lesser value created_at.
my table has no primary key or unique key.
you can use correlated subquery instead of join:
select * employee e exists ( select * employee e2 e.id=e2.id , e.user_id=e2.user_id , e.status = 12 , e2.status=12 , e.stage=false , e2.stage=false , e.match=true , e2.match=true , e.user_id=12 , e.r_needed=true , e2.r_needed=true , e.created_at<e2.created_at , date(e.created_at)='2015-10-08' );
if returns duplicate rows correctly can switch delete
instead of select *
.
Comments
Post a Comment