Имеется база с некоторым количеством одинаковых строк. ID нету. Как найти и удалить идентичные строки (оставив только одну, ессесно)? Можно ли это реализовать посредством sql запроса?
Спасибо!
Этот топик читают: Гость
|
Ответов: 87
Рейтинг: 1
|
|||
| карма: 1 |
|
|
Ответов: 16884
Рейтинг: 1239
|
|||
|
Лучше проверять перед записью в базу. Примерно так:
SELECT count() FROM имяТаблицы WHERE FIO="Иванов Петр Николаевич" Если = 0 то INSERT INTO имяТаблицы values("Иванов Петр Николаевич") |
|||
| карма: 25 |
|
|
Ответов: 87
Рейтинг: 1
|
|||
|
Я поступил так:
CREATE TEMPORARY TABLE base_backup(Название, Адрес, Метро, Телефон, Факс, email, Сайт, Инфо, Рубрика);
INSERT INTO base_backup SELECT DISTINCT Название, Адрес, Метро, Телефон, Факс, email, Сайт, Инфо, Рубрика FROM base; DROP TABLE base; CREATE TABLE base (Название, Адрес, Метро, Телефон, Факс, email, Сайт, Инфо, Рубрика); INSERT INTO base SELECT Название, Адрес, Метро, Телефон, Факс, email, Сайт, Инфо, Рубрика FROM base_backup; DROP TABLE base_backup; |
|||
| карма: 1 |
| ||
| файлы: 1 | code_15011.txt [470B] [121] |
|
Ответов: 16884
Рейтинг: 1239
|
|||
|
Вместо
DROP TABLE base;
Вполне можно было применить:
CREATE TABLE base (Название, Адрес, Метро, Телефон, Факс, email, Сайт, Инфо, Рубрика); DELETE FROM base WHERE 1 - удалить все записи из таблицы base
------------ Дoбавленo в 22.31: dimm666, погориш ты на русских названиях колонок. |
|||
| карма: 25 |
|
|
Ответов: 211
Рейтинг: 52
|
|||
|
dimm666, Попробуйте через ROWID:
BEGIN TRANSACTION; DELETE FROM base WHERE ROWID NOT IN (SELECT MIN(ROWID) FROM base GROUP BY Название); COMMIT; |
|||
| карма: 1 |
|
5



Поиск
Друзья
Администрация