|
автор: okosv (30.11.-1 в 00:00) |
|
| Здраствуйте Accessисты!
Как можно удаленить дублирующиеся записи через запрос, сравнение по нескольким полям.
У кого какие идеи? | |
|
| |
|
автор: Andrew (30.11.-1 в 00:00) |
|
| Решение в лоб Есть таблица А - содержит дублирующиеся записи , сравнение в которой по нескольким полям.
Создаем таблицу Б - где делаем уникальный индекс - совокупный по сравниваемым полям
Длелаем запрос на вставку из таблицы А в таблицу Б - при этом запрос ругнется (если это все в аксе-се происходит) что мол не будет вставлено следующее число записей..... Жмем клавишу продолжить - и ОПА - у нас таблицка с недублируемыми записями -
Переименовываем таблицу Б в А. прибиваем индекс. ВСЕ !! | |
|
| |
|
автор: ???????? (30.11.-1 в 00:00) |
|
| Re: У кого какие идеи по удалению дублирующихся записей через SQL-запрос? Таблица - Table1
Поля - ID (cчетчик), Field1, Field2, Field3, Field4
Условие - Полей со значение NULL быть не должно.
DELETE Table1.ID
FROM Table1
WHERE (((Table1.ID) Not In (SELECT (SELECT top 1 Table1.ID FROM Table1 WHERE (((Table1.Field1)=Запрос1.Field1) AND ((Table1.Field2)=Запрос1.Field2) AND ((Table1.Field3)=Запрос1.Field3) AND ((Table1.Field4)=Запрос1.Field4))) AS IDнеповтор
FROM (SELECT DISTINCT Table1.Field1, Table1.Field2, Table1.Field3, Table1.Field4
FROM Table1) AS Запрос1)));
Если нужно и для пустых полей, то доработайте сами.
в общем разбирайтесь | |
|
| |
|
автор: ?????? (30.11.-1 в 00:00) |
|
| 2АлексейЕ А если одинаковых записей 3, то, как я понимаю, удалится только одна? | |
|
| |
|
автор: ???????? (30.11.-1 в 00:00) |
|
| Откуда Вы это взяли? | |
|
| |
|
автор: okosv (30.11.-1 в 00:00) |
|
| Уже нашел решение на sql.ru Вот запрос DELETE *
FROM Temp
WHERE ID not in (select max(ID) from Temp group by str1,str2,str3);
здесь Temp - таблица
str1,str2,str3 - поля по которым идет сравнение
единственное требование должно быть ключевое поле
весьма лаконичное решение, по моему | |
|
| |