Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как оставить только одну из нескольких повторившихся записей / 11 сообщений из 11, страница 1 из 1
15.08.2001, 08:23
    #32011805
Как оставить только одну из нескольких повторившихся записей
Есть таблица звонков:
num dtbeg dlit ...........
300 14.08.01 10:00:01 30
300 14.08.01 10:00:01 36
301 14.08.01 10:01:22 11
301 14.08.01 10:01:22 13
333 14.08.01 10:04:06 60
333 14.08.01 10:04:06 70

В таблицу были в результате ошибки вставлены несколько записей об одном и том же звонке - с разной длительностью (отличающейся на случайную величину), но одинаковым номером и временем. Как оставить только одну запись о каждом звонке (с большей длительностью)?
...
Рейтинг: 0 / 0
15.08.2001, 08:42
    #32011807
Slava
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оставить только одну из нескольких повторившихся записей
inser into @tmp select f1, f2... from YourTable t1 where длительность = (select max(длительность) from YourTable t2 where t1.f1 = t2.f1)
ну а с @tmp дальше что угодно делать можно
или
delete YuorTable where тоже
...
Рейтинг: 0 / 0
15.08.2001, 09:09
    #32011816
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оставить только одну из нескольких повторившихся записей
Вы же сами написали что нужно оставить, значит остальное нужно удалить:
delete t1
from tbl t1, tbl t2
where t1.num =t2.num and t1.dtbeg=t2.dtbeg and t1.dlit <t2.dlit
...
Рейтинг: 0 / 0
15.08.2001, 09:32
    #32011817
Slava
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оставить только одну из нескольких повторившихся записей
SergSuper Вы думаете что вариант с коррелирующим подзапросом медленее?
...
Рейтинг: 0 / 0
15.08.2001, 09:36
    #32011818
Павел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оставить только одну из нескольких повторившихся записей
Delete a From YourTable a Inner Join (Select num, Max(dlit) AS dlit From YourTable Group by num) b On a.num = b.num And a.dlit <> b.dlit
Это, как я понял, если дата звонка во всех ошибочных записях одна и та же.
...
Рейтинг: 0 / 0
15.08.2001, 09:39
    #32011819
Павел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оставить только одну из нескольких повторившихся записей
Пока писал уже ответили...
SergSuper, как Вы считаете, какой из запросов отработает быстрее?
...
Рейтинг: 0 / 0
15.08.2001, 09:49
    #32011820
Slava
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оставить только одну из нескольких повторившихся записей
По моему Павел мы одтыхаем
...
Рейтинг: 0 / 0
15.08.2001, 10:26
    #32011830
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оставить только одну из нескольких повторившихся записей
2 Slava & Павел
Я за милисекундами не гоняюсь
а набрать на клаве быстрее мой запрос, потому как он короче
...
Рейтинг: 0 / 0
15.08.2001, 11:15
    #32011841
Alexandr_E
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оставить только одну из нескольких повторившихся записей
Всем большое спасибо за помощь.
Скорость вообще имела значение, так как записей порядка 500 тыс., но отработал запрос SergSuper минут за 10.
...
Рейтинг: 0 / 0
15.08.2001, 14:09
    #32011862
Павел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оставить только одну из нескольких повторившихся записей
Как снова проглючит, попробуй мой .
...
Рейтинг: 0 / 0
16.08.2001, 01:21
    #32011888
Slava
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оставить только одну из нескольких повторившихся записей
PRIMARY KEY имеется? С ним скорость объединения (а у SergSuper именно inner) значительно возрастает.
Если не трудно попробуйте мой и Павла. Очень интересно время исполнения.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как оставить только одну из нескольких повторившихся записей / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]