![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление повторяющийся записи [D5, IB5.x, ]
vinni2000 © (2002-01-03 14:02:00)Проблема,нужно в таблице удалить все повторяющиеся записи подскажите как написать такой запрос. Нужно срочно. Спасибо!!!!
Fareader (2002-01-03 16:23:00) [1]Там же другой вариант, кажется этим я пользовался
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)
но надо проверить который из них...
Delirium (2002-01-03 16:18:00) [2]>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:06:00) [3]Смотри чего на 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 15:50:00) [4]Пишу для 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)