Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Удаление дублирующих записей [FB]


Os ©   (2006-02-20 09:33:00) 

Имеем таблицу типа
Id Key Val1 Val2
1   2     3     10
2   2     4      null
3   2     5      null
4   2     3      null

Запись val2 делается для всех одинаковых Key
Update table set val2=10 where Key=2

Как с min затратами оставить только запись в котой Val1 min, а остальные записи удалить


Os   (2006-02-20 11:01:00) [1]

Обсуждение закрыто. Спасиба за участие. Действительно проще создать уникальный индекс и не допускать создание таких записей.


Johnmen   (2006-02-20 11:00:00) [2]

>Можна вставить в триггер?

Можна. Но не нужно...
Ты скажи, в чём проблема-то?

>ЮЮ ©   (20.02.06 10:42) [3]
>> WHERE Val1 <> (SELECT MIN(Val1) FROM Table)
>Не учитывается Key

Ну и что?


Os   (2006-02-20 10:57:00) [3]

Записи поступают от источника состояния объекта и там возможны различные варианты перехода, и лишние записи необходимо убить, оставив максимальное время отказа.


ЮЮ   (2006-02-20 10:53:00) [4]

А что по-твонму меньше, 10 или NULL
сорри, не обратил внимание, что c минимальным Val1


> Можна вставить в триггер?


Зачем тогда вставлять записи, которые тут же могут быть убиты триггером? Может тогда делать Update?


Os   (2006-02-20 10:50:00) [5]

null является признаком для добавления записей


Os   (2006-02-20 10:42:00) [6]


> DELETE FROM Table WHERE Val1 <> (SELECT MIN(Val1) FROM Table)


Можна вставить в триггер?


ЮЮ   (2006-02-20 10:42:00) [7]


> Как с min затратами оставить только запись в котой Val1
> min,


1   2     3     10
4   2     3      null

А что по-твонму меньше, 10 или NULL


> WHERE Val1 <> (SELECT MIN(Val1) FROM Table)


Не учитывается Key


Johnmen   (2006-02-20 10:27:00) [8]

DELETE FROM Table WHERE Val1 <> (SELECT MIN(Val1) FROM Table)


Наверх

Титульная страница Поиск, карта сайта Написать письмо