Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: У кого какие идеи по удалению дублирующихся записей через SQL-запрос?
 
 автор: 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 - поля по которым идет сравнение
единственное требование должно быть ключевое поле
весьма лаконичное решение, по моему

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList