powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как оставить только одну из нескольких повторившихся записей
11 сообщений из 11, страница 1 из 1
Как оставить только одну из нескольких повторившихся записей
    #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
Как оставить только одну из нескольких повторившихся записей
    #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
Как оставить только одну из нескольких повторившихся записей
    #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
Как оставить только одну из нескольких повторившихся записей
    #32011817
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergSuper Вы думаете что вариант с коррелирующим подзапросом медленее?
...
Рейтинг: 0 / 0
Как оставить только одну из нескольких повторившихся записей
    #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
Как оставить только одну из нескольких повторившихся записей
    #32011819
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока писал уже ответили...
SergSuper, как Вы считаете, какой из запросов отработает быстрее?
...
Рейтинг: 0 / 0
Как оставить только одну из нескольких повторившихся записей
    #32011820
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По моему Павел мы одтыхаем
...
Рейтинг: 0 / 0
Как оставить только одну из нескольких повторившихся записей
    #32011830
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Slava & Павел
Я за милисекундами не гоняюсь
а набрать на клаве быстрее мой запрос, потому как он короче
...
Рейтинг: 0 / 0
Как оставить только одну из нескольких повторившихся записей
    #32011841
Alexandr_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большое спасибо за помощь.
Скорость вообще имела значение, так как записей порядка 500 тыс., но отработал запрос SergSuper минут за 10.
...
Рейтинг: 0 / 0
Как оставить только одну из нескольких повторившихся записей
    #32011862
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как снова проглючит, попробуй мой .
...
Рейтинг: 0 / 0
Как оставить только одну из нескольких повторившихся записей
    #32011888
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PRIMARY KEY имеется? С ним скорость объединения (а у SergSuper именно inner) значительно возрастает.
Если не трудно попробуйте мой и Павла. Очень интересно время исполнения.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как оставить только одну из нескольких повторившихся записей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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