powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как оптимально написать запрос (построить алгоритм) на удаление дублей?
7 сообщений из 7, страница 1 из 1
Как оптимально написать запрос (построить алгоритм) на удаление дублей?
    #32540748
Возможно, это задача типичная для приложений баз данных.

Дано:
В таблице Table1 есть 4 поля (наряду с прочими): Phone1, Model, [Year], PubDate.

Надо:
Удалить все записи с одинаковыми значениями первых трех полей, но чтобы запись с самым последним PubDate осталась.
Если все PubDate одинаковы, то без разницы, какие удалять, но одна запись, чтобы осталась по любому.

Вопрос: можно ли это реализовать как-нибудь одним (двумя) запросами.
Или все же писать алгоритм (на VB), создавать рекодсет, прокручивать, удаляя? И как в этом случае правильно построить алгоритм?

Может кто-то уже работал над подобной задачей?

Заранее спасибо.
Иван Абрамов.
...
Рейтинг: 0 / 0
Как оптимально написать запрос (построить алгоритм) на удаление дублей?
    #32540773
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О недавно подсмотрел

Код: plaintext
1.
2.
3.
delete t1.*
from tbl t1 inner join tbl t2
on (t1.phone = t2.phone) and (t1.model = t2.model)
and (t1.year = t2.year) and (t1.PubDate < t2.PubDate)
?
...
Рейтинг: 0 / 0
Как оптимально написать запрос (построить алгоритм) на удаление дублей?
    #32540781
Blunder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://www.ibase.ru/devinfo/deldupes.htm

здесь несколько вариантов описано
...
Рейтинг: 0 / 0
Как оптимально написать запрос (построить алгоритм) на удаление дублей?
    #32540818
Спасибо, paparome,

но я вижу, что твой запрос удалит только те, где t1.PubDate < t2.PubDate.
А как быть в случае, когда и PubDate одинаковые, и надо оставить одну (любую) запись?

Blunder, тоже спасибо.
...
Рейтинг: 0 / 0
Как оптимально написать запрос (построить алгоритм) на удаление дублей?
    #32540831
Подкорректировал немного запрос

delete t1.*
from tblAd t1
inner join tblAd t2 on t1.phone1 = t2.phone1
and t1.model = t2.model
and t1.year = t2.year
and (t1.PubDate < t2.PubDate or (t1.PubDate = t2.PubDate and t1.ID < t2.ID))

Так наверно будет то, что надо.
...
Рейтинг: 0 / 0
Как оптимально написать запрос (построить алгоритм) на удаление дублей?
    #32540843
Galustov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хороший вариант у Ивана Обрамова, только объясните ID - это что?
...
Рейтинг: 0 / 0
Как оптимально написать запрос (построить алгоритм) на удаление дублей?
    #32540851
ID - это уникальное поле, присутствующее в таблице. (В условии задачи отсутствовало.)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как оптимально написать запрос (построить алгоритм) на удаление дублей?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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