Удаление дубликатов в доступе 2003

На Вашем Mac перейдите к Установкам системы> Звук> Звуковые эффекты и затем снимите флажок и перепроверьте "Звуковые эффекты пользовательского интерфейса игры".

необходимо повторно активировать системные звуки, видеть конец этот страница.

6
задан Mr_Chimp 22 October 2009 в 12:22
поделиться

3 ответа

Причина, по которой запрос на поиск дубликатов не позволяет удалять записи, заключается в том, что это, по сути, просто агрегированный запрос, он подсчитывает количество найденных дубликатов и возвращает случаи, когда счетчик больше 1.

Учтите, что если бы вы сделали запрос на удаление на основе найденных дубликатов, он удалил бы все строки с повторяющимися значениями, что, возможно, не то, что вам нужно. Вы хотите удалить все дубликаты, кроме одного.

Вы должны попытаться удалить все дубликаты записи, кроме одного, за исключением столбца ID в вашем сравнении. Я предлагаю самый простой способ сделать это - сделать запрос make-table для всех уникальных значений (выберите Distinct Field1, Field2 ... из MyTable) вместо каждого поля , кроме для поля ID, используя результаты в a, чтобы создать новую таблицу из примерно 2000 записей (если половина - дубликаты).

Затем создайте столбец идентификатора в новой таблице, используйте запрос на обновление, чтобы обновить этот идентификатор до первого совпадающего идентификатора в исходной таблице (вы можете сделать это с помощью DLookup , , который будет вернуть первое значение EXPRESSION, где CRITERIA истинно в DOMAIN ).

Функция DLookup () возвращает один значение из одного поля, даже если больше чем одна запись удовлетворяет критерии. Если ни одна запись не удовлетворяет критериев, или если домен не содержит записей, DLookup () возвращает Null.

Поскольку вы определяете первый совпадающий идентификатор на основе всех других полей, которые являются уникальными значениями, несовпадающие идентификаторы будут принадлежать дубликатам. Вы измените отношение PK, идентифицируя первый совпадающий ключ с учетом набора уникальных полей. После этого вы должны установить идентификатор PK. Конечно, это предполагает, что идентификатор не имеет внутреннего значения, и вы не заботитесь о сохранении одного конкретного идентификатора для данной дублированной строки по любому из идентификаторов, принадлежащих другим повторяющимся строкам. Это предполагает, что вы заботитесь о данных в столбце ID, поэтому хотите сохранить их для всех оставшихся строк, в противном случае просто проигнорируйте шаг DLookup и выполните Select Distinct для всех столбцов, кроме ID.

7
ответ дан 10 December 2019 в 00:40
поделиться

Используйте выборку для всех столбцов, кроме столбца ID:

SELECT DISTINCTROW Column1, Column2, Column3 
INTO MYNEWTABLE
FROM TABLE

Вы можете просто поменять местами имена.

Это решение будет даст вам новую таблицу без дубликатов.

1
ответ дан 10 December 2019 в 00:40
поделиться

Следующее будет сохранять исходные идентификаторы и делать это за один шаг:

DELETE FROM table_with_duplicates 
WHERE table_with_duplicates.id NOT IN 
    (SELECT max(id) 
    FROM table_with_duplicates 
    GROUP BY duplicated_field_1, duplicated_field_2, ...
    )

Теперь у вас есть исходная таблица без дубликатов и сохраненных идентификаторов. И всегда не забывайте делать резервную копию ваших данных перед попыткой УДАЛЕНИЯ большого размера.

1
ответ дан 10 December 2019 в 00:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: