Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.049 c
2-1164042627
lobach
2006-11-20 20:10
2006.12.10
Как проверить существование пункта в listbox?


15-1163586904
Чапаев
2006-11-15 13:35
2006.12.10
Что сделать с дохлым приводом CD-RW?


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


3-1159976497
Sanya_BBB
2006-10-04 19:41
2006.12.10
Как внести данные сразу в главную и дочернюю таблицы. В сетевой Б


9-1139395378
TGX
2006-02-08 13:42
2006.12.10
gamedev





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский