Я не знаю, является ли следующий ответ эффективным.Пожалуйста, дайте мне знать, если так.
Предполагая, что Table_V1
- это тот, который включает дубликаты, я создал вторую версию, которая включает количество дубликатов рядом с исходными данными
CREATE TABLE Table_V2 AS (
SELECT
A.*,
B.CNT
FROM Table_V1 A
LEFT JOIN
(SELECT * FROM (SELECT COL1, COL2, COUNT(COL1) AS CNT FROM Table_V1 GROUP BY COL1,
COL2) WHERE CNT>1) B
ON A.COL1 = B.COL1 AND A.COL2 = B.COL2);
Затем я удаляю дубликаты / тройки / четверки, и т. Д., Используя следующие строки:
DELETE FROM Table_V2 WHERE CNT IS NOT NULL
AND ROWID NOT IN (
SELECT MAX (ROWID)
FROM Table_V2
WHERE CNT IS NOT NULL
GROUP BY COL1, COL2);