SQL запрос на удаление полных дубликатов

Есть таблица. В ней есть строки которые полностью дублируются. Мне нужно удалить все дубли. Как для этого составить запрос?

product_id key value
2 ключ_2 значение_2
2 ключ_2 значение_2
3 ключ_3 значение_3
2 ключ_2 значение_2
4 ключ_4 значение_4
4 ключ_4 значение_4

Так делаю запрос чтобы выбрать дубликаты строк:

SELECT `product_id`, `key`, count(*)
FROM `eva_ms2_product_options`
WHERE `key` = 'mat_kovrika'
GROUP BY `product_id`
HAVING count(*) > 1

Ответы (2 шт):

Автор решения: Andrew Holovko

Выбираете все записи уникальные записи.

SELECT *
FROM eva_ms2_product_options
GROUP BY product_id, key, value

Дальше удаляете все записи из таблицы и вставляете эти.

→ Ссылка
Автор решения: Merlin
DELETE 
  FROM eva_ms2_product_options
 WHERE EXISTS (SELECT *
                FROM (SELECT *, row_number() OVER (PARTITION BY product_id,key,value) AS rw
                             FROM eva_ms2_product_options)f1
               WHERE f1.rw > 1
                 AND eva_ms2_product_options.product_id=f1.product_id
                 AND eva_ms2_product_options.key=f1.key
                 AND eva_ms2_product_options.value=f1.value)

p.s. почему в условии не через IN? - может удалить вообще все записи если ничего не найдёт

p.s.s. первый eva_ms2_product_options можно как-то обозвать, чтобы не запутаться, но на SQLLite не дал мне это сделать, от субд видимо зависит.

→ Ссылка