неправильный ответ @Molochdaa
Объяснение.Предположим, что это таблица
col_name | value
------------------
east | 10
west | 15
east | 10
west | 15
north | 5
east | 10
north | 5
, которая позволяет выбрать отдельное имя col_name из имени таблицы:
col_name
------------------
east
west
north
теперь, когда вы пишете delete from table where col_name not in ( ... )
, строка не будет возвращена, так как каждый столбец находится в возвращаемомlist
Правильный ответ будет (предложенный @jeffery_the_wind)
delete from table where col_name in (
select a.col_name from (
select col_name from table group by col_name having count(*)>1
) a
)
Другой, более простой ответ
delete from table_name
where rowid not in ( select min(rowid)
from Table_name
group by column1..,column2,...column3..)