Форум: "Базы";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
ВнизУдалить одинаковые записи в 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.045 c