Этот подзапрос возвращает все мин sr_no
с для каждого id
, и это строки, которые вы хотите сохранить:
select min(sr_no) sr_no
from tablename
group by id
Таким образом, вы можете удалить все остальные sr_no
с:
delete from tablename
where sr_no not in (
select sr_no from (
select min(sr_no) sr_no
from tablename
group by id
) t
);
См. Демоверсию . Или с самостоятельным присоединением:
delete t1
from tablename t1 inner join tablename t2
on t2.id = t1.id and t2.sr_no < t1.sr_no;
См. Демонстрационную версию . Результаты:
| sr_no | id | content |
| ----- | --- | ------- |
| 1 | 200 | abc |
| 2 | 201 | xyz |
| 3 | 202 | aaa |
| 5 | 300 | ccc |