Вверх ↑
Этот топик читают: Гость
Ответов: 87
Рейтинг: 1
#1: 2009-09-22 20:17:00 ЛС | профиль | цитата
Имеется база с некоторым количеством одинаковых строк. ID нету. Как найти и удалить идентичные строки (оставив только одну, ессесно)? Можно ли это реализовать посредством sql запроса?
Спасибо!
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#2: 2009-09-22 21:48:00 ЛС | профиль | цитата
Лучше проверять перед записью в базу. Примерно так:
SELECT count() FROM имяТаблицы WHERE FIO="Иванов Петр Николаевич"
Если = 0 то
INSERT INTO имяТаблицы values("Иванов Петр Николаевич")


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 87
Рейтинг: 1
#3: 2009-09-22 22:00:34 ЛС | профиль | цитата
Я поступил так:

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

0
файлы: 1code_15011.txt [470B] [121]
Ответов: 16884
Рейтинг: 1239
#4: 2009-09-22 22:29:39 ЛС | профиль | цитата
Вместо
DROP TABLE base;
CREATE TABLE base (Название, Адрес, Метро, Телефон, Факс, email, Сайт, Инфо, Рубрика);
Вполне можно было применить:
DELETE FROM base WHERE 1
- удалить все записи из таблицы base

------------ Дoбавленo в 22.31:
dimm666, погориш ты на русских названиях колонок.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 211
Рейтинг: 52
#5: 2009-09-22 22:34:28 ЛС | профиль | цитата
dimm666, Попробуйте через ROWID:
BEGIN TRANSACTION;
DELETE FROM base WHERE ROWID NOT IN (SELECT MIN(ROWID) FROM base GROUP BY Название);
COMMIT;
карма: 1
слтв
0
5
Сообщение
...
Прикрепленные файлы
(файлы не залиты)