Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];

Вниз

Удалить все дубликаты записей   Найти похожие ветки 

 
Behemoth   (2003-01-24 14:28) [0]

В таблице Calls одно автоинкрементное поле ID и два десятка других (Field1..Field20). Узнать что это дубликат записи можно только по совокупности всех 20 полей. Так вот надобно убить дубликаты.
SELECT DISTINCT Field1,..,Field20 FROM Calls показывает все уникальные, а надо изничтожить остальные


 
Anatoly Podgoretsky   (2003-01-24 14:35) [1]

У тебя база есть?


 
Behemoth   (2003-01-24 14:37) [2]

Простите.... MS SQL 2000


 
Cu   (2003-01-24 14:42) [3]

мда.. кроме как вытащить distinct-ом во временную таблицу
то что тебе в итоге надо, почистить таблицу и перелить
в неё данные из временной таблицы придумать не могу :-/


 
stone   (2003-01-24 14:42) [4]

примерно так:

delete from Calls from Calls c where exists (select * from Calls where Field1 = c.Field1 and ... Field20 = c.Field20 and ID > c.ID)


 
Reindeer Moss Eater   (2003-01-24 14:43) [5]

delete from table where id not in (select max(id) from table group by f1,......f20)


 
neXt   (2003-01-24 14:43) [6]

Можно, используя запрос

SELECT DISTINCT Field1,..,Field20 FROM Calls

сложить всё в отдельную таблицу (временную)
Далее, в Calls грохнуть всё и залить в неё уникальные записи из временной таблицы.


 
roottim   (2003-01-24 14:48) [7]

примерная реализация всего сказанного ( я так понимаю никакого уникального id и в помине нет, т.к строки полностью идентичны)

create table temp_table as select distinct * from my_table;
delete table my_table;
insert into my_table select * from temp_table;
drop table temp_table;

если в my_table записей до едрени фени кое-где надо усложнить запрос.. но принцип то-тже...


 
neXt   (2003-01-24 14:55) [8]

>>roottim
>> уникального id и в помине нет,
Может и есть, Behemoth говорит, что дублироваться могут записи по всем другим полям, кроме ID. Так что ...select distinct * from... не подойдёт, нужно перечислять все поля, кроме ID.


 
Behemoth   (2003-01-24 14:57) [9]

to roottim^: а записей тама именно стоко (в месяц добавляется по 700 000), а хранить их надо где-то год....Это долговато...


 
neXt   (2003-01-24 15:01) [10]

Нужно, тогда проверять на уникальность при добавлении, а не отлавливать повторы после.


 
Behemoth   (2003-01-24 15:06) [11]

to neXT: да....похоже это правильнее.
Спасибо всем!!


 
roottim   (2003-01-24 15:29) [12]

извените... незаметил ID
к слову:
вопрос о проверке при вставке корректен, когда вставка выполняется скажем в ручную, а ежели загружать пачками, тот тут еще вопрос...


 
Anatoly Podgoretsky   (2003-01-24 15:42) [13]

В этом случае надо заботиться еще раньше



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
6-28971
abcd
2002-12-19 14:15
2003.02.10
Socket ы


1-28693
edell
2003-01-29 22:09
2003.02.10
блокировка клавы


7-29112
DAnton
2002-12-05 13:23
2003.02.10
Как установить системную дату.


1-28854
Grizl
2003-01-30 12:03
2003.02.10
Запутался в указателях.. =(


7-29133
Костян
2002-12-08 06:55
2003.02.10
FloppyDisk password





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский