Access

Access как найти повторяющиеся записи: Поиск повторяющихся записей с помощью запроса

Удаление повторяющихся записей с помощью запроса

Access

Запросы

Расширенные запросы

Расширенные запросы

Удаление повторяющихся записей с помощью запроса

Access для Microsoft 365 Access 2021 Access 2019 Access 2016 Access 2013 Еще…Меньше

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

Примечание: Методы, описанные в этой статье, не относятся к веб-приложениям Access.

Перед удалением данных

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

  • Убедитесь, что файл не только для чтения.

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

  • Если у вас есть разрешения на открытие базы данных в монопольном режиме, нажмите кнопку «Файл>открыть и выберите базу данных. Щелкните стрелку рядом с кнопкой «Открыть» и выберите «Монопольно».

  • Что самое важное, не забудьте сделать это.

    Удаленные записи можно восстановить только из резервной копии. Удаление также может привести к удалите записи в связанных таблицах.

Примечание:  Чтобы восстановить исходный файл из резервной копии, закроем и переименуем его, чтобы использовать имя исходной версии. Назначьте имя исходной версии резервной копии и откройте ее в Access.

Создание и выполнение запроса на удаление

  1. На вкладке «>конструктор запросов» дважды щелкните таблицу, из которой вы хотите удалить записи.

  2. Дважды щелкните звездочка(*),чтобы добавить все поля таблицы в конструктор запросов.

  3. Добавьте поля, которые вы будете использовать для определения записей для удаления. Например, предположим, что клиент заехает из компании и вам нужно удалить все ожидающих ожидания заказов для этого клиента. Чтобы найти только эти записи, можно добавить поля «ИД клиента» и «Дата заказа» в сетку конструктора.

  4. Вы также можете добавить условия в строке «Условия». Например, вы можете добавить ИД клиента клиента, который устарел, и дату, после которой заказы этого клиента являются недопустимыми.

  5. Для каждого поля условия откажитесь от показа.

  6. org/ListItem»>

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

  7. На вкладке «Конструктор» нажмите кнопку «Удалить». Access изменяет запрос на выборки на запрос на удаление, скрывает строку «Показать» в нижней части сетки и добавляет строку «Удалить».

  8. Еще одна проверка перед запуском запроса на удаление: убедитесь, что строка «Удалить» в столбце *(все поля) отображает строку «С» и «Где» в любом из столбцов условия.

  9. На вкладке «Конструктор» нажмите кнопку «Выполнить > Да».

Дополнительные данные см. в таблице «Сравнение двух таблиц и поиск записей без совпадений».

К началу страницы

Удаление повторяющихся записей

 
KDS   (2002-09-12 12:57) [0]

Всем привет!

Можно ли средствами только Access
удалить повторяющиеся записи или все равно придется писать программку для чистки?
Если в Access заложена эта функция, то где ее искать?


 
LordOfSilence   (2002-09-12 13:08) [1]

В среде Access создайте новый запрос с помощью
мастера «повторяющиеся записи», ответив на
задаваемые вопросы. Посмотрите на результат
отработки запроса (это пока только выборка).
После этого меню «Запрос\Удаление» (до этого
переключатель стоял в режиме «выборка»).
Произведите необходимые изменения в дизайнере
запроса и, наверное, все…


 
KDS   (

2002-09-12 13:58) [2]

>LordOfSilence Спасибо за внимание
Выборку повторяющихся я сделал вручную SQL-запросом.
Этот список есть.
Уточняю вопрос:
Необходимо, чтобы осталось по одной записи.
При Вашем предложении удалятся все повторяющиеся.
Т.е. было две одинаковые записи, а станет ноль,
а мне необх. оставить только одну, любую.


 
LordOfSilence   (2002-09-12 14:06) [3]

>KDS
Эта тема довольно живо обсуждалась здесь пару дней назад,
поищите ее, если не лень.


 
LordOfSilence   (

2002-09-12 14:48) [4]

Дима, извините, если опять «невпопад», но может
следующие мысли Вам помогут.

1. Список повторений мы создали (Запрос1).
2. Создаем Запрос2 к Запросу 1,
в нем делаем группировку по повторяющемуся полю
( а может полям? вообще большой вопрос, что в
Вашем случае и как повторяется),
а к остальным полям применяем аггрегирующие функции
First()/Last() (есть такие в Access2000).

Таким образом, у нас есть список записей, на основе
которого мы можем создать новую таблицу, старую «грохнуть»
и т.п. — на Ваше усмотрение.

Только что смоделировал эту ситуацию, вроде работает.
Подразумевается, что повторяется поле Pole1.

SELECT [Запрос1].Pole1, Last([Запрос1].Pole2) AS [Last-Pole2], Last([Запрос1].

Pole3) AS [Last-Pole3], Last([Запрос1].Pole4) AS [Last-Pole4]
FROM [Запрос1]
GROUP BY [Запрос1].Pole1;


 
sniknik   (2002-09-12 15:21) [5]

да уж вопрос явно неоригинален, часто повторяется.
выполни простой запрос вроде приведенного в том же Access после переименуй табличку
SELECT * INTO ADVDISC1 FROM (SELECT DISTINCT * FROM ADVDISC)
удалятся только повторы причем только при совпадении всех полей, впрочем по одному тоже можно немного переделав запрос.


 
KDS   (2002-09-12 16:38) [6]

>LordOfSilence и sniknik Спасибо, ребята!!!
Вы мне оба очень помогли, подсказав, что необх. создать новую таблицу на основе данной (с повторениями)!

>LordOfSilence узнал новое для себя
про First()/Last() (есть такие в Access2000)
>sniknik очень рационально и быстро.
Удачи Вам!


Как создать запрос на поиск дубликатов

55e87ec5166282983499812b 55e07879bae0135431cfdd03

Урок 18. Запросы: как создать запрос на поиск дубликатов

/en/access2010/queries-how-to-create-a-parameter-query/content/

Как создать запрос на поиск дубликатов запрос на поиск дубликатов

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

Не все записи, содержащие одинаковую информацию, являются дубликатами. Например, записи о двух заказах, которые были размещены в разные даты, но содержали одинаковые позиции, будут , а не , дублирующимися записями. Точно так же не все повторяющиеся записи содержат полностью идентичную информацию. Например, две записи клиентов могут относиться к одному и тому же человеку, но содержать разные адреса. Запись с устаревшим адресом будет дублирующей записью.

Почему так важно избавляться от повторяющихся записей? Рассмотрим пример выше. Если бы у нас было несколько записей для одного клиента, было бы сложно просмотреть историю заказов для него, потому что эта информация была бы разбросана по нескольким несвязанным записям. Мы можем даже доставить его заказ по неверному адресу, если человек, вводящий информацию о заказе, выберет устаревшую запись. Легко увидеть, как наличие повторяющихся записей может подорвать целостность и полезность вашей базы данных.

К счастью, Access упрощает поиск и обнаружение потенциальных повторяющихся записей. Обратите внимание, что Access не удалит записи за вас и не поможет определить, какая из них актуальна — вам придется делать это самостоятельно. Однако, если вы знакомы с данными в своей базе данных, избавиться от повторяющихся записей будет вполне выполнимой задачей.

Чтобы создать запрос на поиск дубликатов:
  1. Выберите вкладку Create на ленте и найдите Queries 9Группа 0012.
  2. Щелкните команду Query Wizard .

    Команда мастера запросов

  3. Появится диалоговое окно New Query . Выберите Запрос на поиск дубликатов из списка запросов, затем нажмите OK .

    Выбор создания запроса на поиск дубликатов

  4. Выберите таблицу, в которой вы хотите найти повторяющиеся записи, затем нажмите Далее . Мы ищем повторяющиеся записи клиентов, поэтому мы выберем Клиенты табл.

    Выбор таблицы для поиска дубликатов

  5. Выберите поля, в которых вы хотите искать повторяющиеся данные, выбрав их, а затем нажав кнопку со стрелкой вправо . Выбирайте только те поля, которые не должны совпадать в неповторяющихся записях. Например, поскольку мы ищем повторяющихся клиентов, мы будем выбирать только поля Имя и Фамилия , так как маловероятно, что несколько человек с одинаковыми именем и фамилией будут размещать заказы в нашей пекарне. Когда вы добавили нужные поля, нажмите Далее .

    Выбор полей для поиска повторяющейся информации

  6. Выберите дополнительные поля для просмотра в результатах запроса. Выберите поля, которые помогут вам различать повторяющиеся записи и выбирать, какую из них вы хотите сохранить. В нашем примере мы добавим все поля, относящиеся к адресам клиента , а также поля Email и Номер телефона — как записи с идентичными именами клиентов, которые могут содержать неидентичную информацию в этих полях. Когда вы будете удовлетворены выбранными полями, нажмите Далее .

    Выбор других полей для просмотра результатов

  7. Access предложит имя для вашего запроса, но вы можете ввести другое имя. Если вас устраивает имя запроса, нажмите Finish , чтобы выполнить запрос.

    Присвоение имени запросу

  8. Если Access обнаружит какие-либо повторяющиеся записи в вашем запросе, они будут отображаться в результатах запроса . Просмотрите записи и удалите устаревшие или неверные записи по мере необходимости.

    Повторяющиеся записи в результатах запроса

Советы по разрешению повторяющихся записей
  • Сохраняйте ваши запросы на повторяющиеся записи и чаще запускайте их.
  • Изучите потенциальных повторяющихся записей, просмотрев связанные данные в других таблицах. Вы можете сделать это, выполнив поиск идентификационных номеров
    этих записей
    в связанных таблицах. Связана ли одна запись в основном со старыми заказами, а другая содержит недавние? Последний, скорее всего, будет нынешним.
  • После того, как вы решите, какую запись удалить, убедитесь, что вы не потеряете информацию, которая может вам понадобиться. В нашем примере перед тем, как удалить повторяющуюся запись, мы нашли все заказы, связанные с идентификационным номером этой записи , и заменили его идентификационным номером записи, которую решили сохранить.
Продолжать

Previous: Запросы: как создать запрос параметров

Next:Краткое справочное руководство по критериям запроса

/en/access2010/query-criteria-quick-reference-guide/content/

Как найти повторяющиеся значения в таблице SQL

Как правило, рекомендуется накладывать на таблицу уникальные ограничения, чтобы предотвратить дублирование строк. Однако вы можете столкнуться с тем, что работаете с базой данных, в которой повторяющиеся строки были созданы из-за человеческой ошибки, ошибки в вашем приложении или неочищенных данных из внешних источников. Этот учебник научит вас, как найти эти повторяющиеся строки.

Чтобы продолжить, вам потребуется доступ для чтения к вашей базе данных и инструмент для запроса вашей базы данных.

Определение повторяющихся критериев

Первый шаг — определить критерии для повторяющейся строки. Вам нужно, чтобы комбинация двух столбцов была уникальной вместе, или вы просто ищете дубликаты в одном столбце? В этом примере мы ищем дубликаты в двух столбцах нашей таблицы «Пользователи»: имя пользователя и адрес электронной почты.

Запись запроса для проверки существования дубликатов

Первый запрос, который мы собираемся написать, — это простой запрос для проверки наличия дубликатов в таблице. Для нашего примера мой запрос выглядит так:

 ВЫБЕРИТЕ имя пользователя, адрес электронной почты, COUNT(*)
ОТ пользователей
СГРУППИРОВАТЬ ПО имени пользователя, электронной почте
СЧЕТЧИК(*) > 1
 

НАЛИЧИЕ важно здесь, потому что в отличие от ГДЕ , НАЛИЧИЕ фильтрует агрегатные функции.

Если возвращаются какие-либо строки, это означает, что у нас есть дубликаты. В этом примере наши результаты выглядят так:

электронная почта
имя пользователя количество
Пит [email protected] 2
Джессика джессика@example.com 2
Мили [email protected] 2

Список всех строк, содержащих дубликаты

На предыдущем шаге наш запрос вернул список дубликатов. Теперь мы хотим вернуть всю запись для каждой повторяющейся строки.

Для этого нам нужно выбрать всю таблицу и соединить ее с нашими повторяющимися строками. Наш запрос выглядит так:

 ВЫБОР а.*
ОТ пользователей
ПРИСОЕДИНЯЙТЕСЬ (ВЫБЕРИТЕ имя пользователя, адрес электронной почты, СЧЕТЧИК (*)
ОТ пользователей
СГРУППИРОВАТЬ ПО имени пользователя, электронной почте
ИМЕЕТ count(*) > 1 ) b
ON a.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *