Удалить дубликаты записей в SQLite - PullRequest
1 голос
/ 06 апреля 2011

У меня есть одна таблица с повторяющимися записями. За исключением primary_key все записи одинаковы.

Записи даже хранят уникальный идентификатор, который будет таким же, если записи являются дубликатами (secondID).

Даже если это не кажется сложным, у меня возникают проблемы с созданием rawQuery в Android, который удаляет повторяющиеся записи на основе второго идентификатора.

dataBase.rawQuery("DELETE FROM " + table + " WHERE " + secondID + " EQUALS " + secondID + ");", null);

Я, вероятно, совершенно не прав насчет этого запроса, но, похоже, я пробовал некоторые действительно сложные запросы, а некоторые очень простые, такие как приведенный выше, но безуспешно.

Любая помощь будет оценена.

Ответы [ 4 ]

7 голосов
/ 06 апреля 2011

Или как то так:

DELETE FROM table WHERE primary_key NOT IN (SELECT MIN(primary_key) FROM table GROUP BY secondID)

Который должен выбрать первичный ключ первого экземпляра каждого отдельного secondID и удалить все, чего нет в этом списке.

1 голос
/ 06 апреля 2011

попробуйте это ..

DELETE FROM table a1 USING table b1 WHERE a1.anyfield=b1.anyfiled AND a1.id<b1.id;

a1 и b1 - одна и та же таблица

0 голосов
/ 26 января 2012

Это будет работать:

dataBase.execSQL("DELETE FROM " + table + " WHERE " + secondID + "=" + secondID);
0 голосов
/ 06 апреля 2011

Попробуйте это:

dataBase.rawQuery("DELETE FROM " + table + " WHERE " + secondID + " = " + secondID + ");", null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...