Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.10;
Скачать: CL | DM;

Вниз

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

 
snake767   (2006-10-06 12:54) [0]

Есть таблица в которой нужно удалить одинковые записи, т.е. отсавить одну, вместо2х, 3х итд. Если делать sql запрос:
"delete from LANDISHIST where ID=1 and GROUPID=1 and ARDTIMESTAMP = "20.07.2006 14:00:00", то удалит все записи с такими полями, а нужно оставить одну.
И почему неполучается пользоваться таким макаром:
IBQuery1.edit
IBQuery1.Fields[0].asString := "test";
IBQuery1.Post;
выдает ошибку


 
MsGuns ©   (2006-10-06 12:58) [1]

Что есть id ? Если это поле определяется генератором и является первичным ключом, то все, что в сабже - криминал. От первой строки до последней.

Что есть "одинаковые записи" ? Если такие ДОПУСКАЮТСЯ в файрберде, то разработчика такой "БД" - на гілл`яку


 
Desdechado ©   (2006-10-06 13:04) [2]

на ibase.ru была статья по этому поводу (суть - использование внутреннего системного идентификатора записи)


 
Sergey13 ©   (2006-10-06 13:04) [3]

> [0] snake767   (06.10.06 12:54)

> а нужно оставить одну.
Самое простое и универсальное
insert into double_table select distinct * from source_table;
delete from source_table;
insert into source_table select * from double_table;
Только не забыть тригера и констрейнты поотключать.

> И почему неполучается пользоваться таким макаром:
Потому что еще не выполнил пункт 1


 
atruhin ©   (2006-10-06 13:05) [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)


 
MsGuns ©   (2006-10-06 14:34) [5]

>atruhin ©   (06.10.06 13:05) [4]

Если такие ДОПУСКАЮТСЯ в файрберде, то разработчика такой
"БД" - на гілл`яку

Так что на гілл`яку не разработчика файрберда а автора.

?


 
Sergey13 ©   (2006-10-06 14:38) [6]

> [5] MsGuns ©   (06.10.06 14:34)
> ?

Все СУБД допускают такое, просто не все разработчики этим пользуются. 8-)


 
MsGuns ©   (2006-10-06 16:26) [7]

Блин, переведу..

Не все СУБД имеют средства уникально индентифицировать записи в таблицах, поэтому тех разработчиков, которые при работе с такими СУБД НЕ ПРЕДУСМОТРЕЛИ блокировку ввода записей-дублей, вешать не надо.
Если же СУБД имеет такие средства (как жарптичка, например), а горе-разработчик все же напроектировал в своей БД так, что в таблице появляются записи-"двойники", то такого "умельца" надо в дворники или "на гилляку".


 
Johnmen ©   (2006-10-06 17:08) [8]

DELETE FROM Table T1 WHERE 1<(SELECT COUNT(*) FROM Table T2 WHERE T1.Field1=T2.Field2 AND ...)


Автора таких таблиц отлучить от всего навсегда. В дворники...



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

Текущий архив: 2006.12.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
15-1163667927
DelphiLexx
2006-11-16 12:05
2006.12.10
Помогите подобрать цвет для заголовков групп grid a


15-1164126004
Reaktor
2006-11-21 19:20
2006.12.10
Прпал пуск в ХР


10-1126113296
kblc
2005-09-07 21:14
2006.12.10
inproc com-server


15-1164029660
Суслик
2006-11-20 16:34
2006.12.10
Свободный FTP сервер.


2-1164270771
*Стажер*
2006-11-23 11:32
2006.12.10
TBitmap to XML