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




Вниз

Удаление повторяющийся записи 


vinni2000   (2002-01-03 14:02) [0]

Проблема, нужно в таблице удалить все повторяющиеся записи подскажите как написать такой запрос. Нужно срочно. Спасибо!!!!



Delirium   (2002-01-03 15:50) [1]

Пишу для MSSQL, из таблицы Test (ключевое поле id) удаляются все повторяющиеся (в поле cValue) записи:

delete from test
where id in (select id from
(select Min(id) as id,cValue,Count(*) as C
from test
group by cValue) tmp where c>1)



Fareader   (2002-01-03 16:06) [2]

Смотри чего на www.ib.demo.ru было

DELETE FROM XXX T1 WHERE EXISTS
(SELECT * FROM XXX T2 WHERE
(T2.column1 = T1.column1 or (T2.column1 is null and T2.column1 is null)) AND
(T2.column2 = T1.column2 or (T2.column2 is null and T2.column2 is null)) AND
(.......) AND
(T2.RDB$DB_KEY > T1.RDB$DB_KEY))

В этом случае используется RDB$DB_KEY - физический номер записи IB. Можно оставить как запись с самым большим DB_KEY, так и с самым меньшим (> или < в последнем условии WHERE).

Статья называется : Удаление или поиск дубликатов записей в таблице
Авторы: Diane Brown
Cognos



Delirium   (2002-01-03 16:18) [3]

>Fareader
Согласен, такой командой удаляются не только "двойные", но и все остальные "лишние".

delete test where id in
(select t2.id from test t1,test t2
where (t1.cValue=t2.cValue) and (t1.id<t2.id))



Fareader   (2002-01-03 16:23) [4]

Там же другой вариант, кажется этим я пользовался

SELECT * FROM TABLE T1
WHERE EXISTS
(SELECT FIELD FROM TABLE T2
WHERE T1.FIELD = T2.FIELD AND
T1.RDB$DB_KEY != T2.RDB$DB_KEY)

но надо проверить который из них...




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




Наверх





Память: 0.72 MB
Время: 0.045 c
14-8981           anod                  2001-12-12 19:42  2002.02.04  
Вопрос по Перлу


1-8830            ТеньЛуны              2002-01-15 11:14  2002.02.04  
Пару дней назад...


14-9000           Вадим                 2001-12-12 18:21  2002.02.04  
Не хорошо... :((


1-8900            Леванё                2002-01-16 13:00  2002.02.04  
Пояему не работает null


4-9033            Mr.Death              2001-11-22 08:59  2002.02.04  
Как перехватить вперед системы сочетание Сtrl+Alt+Del из под WIN2000/XP