आप इसे कई बार चलाने का प्रयास कर सकते हैं :
delete from mytable where id in (
select max(id)
from mytable
group by name
having count(1) > 1
);
जहां कई बार name
. में आपके द्वारा दोहराई गई अधिकतम संख्या के बराबर है कॉलम।
अन्यथा, आप इस अधिक जटिल प्रश्न को आजमा सकते हैं:
delete from mytable where id in (
select id from mytable
except
(
select min(id)
from mytable
group by name
having count(1) > 1
union all
select min(id)
from mytable
group by name
having count(1) = 1
)
);
इस क्वेरी को केवल एक बार चलाने से आपको वह सब हटा देना चाहिए जिसकी आपको आवश्यकता है। हालांकि कोशिश नहीं की...