Поиск повторяющихся записей с помощью запроса
Access для Microsoft 365 Access 2021 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Еще…Меньше
Повторяющиеся данные обычно появляются в том случае, если несколько людей добавляют данные в базу Access одновременно или если в базе не предусмотрена проверка повторов. Повторяющиеся данные — это либо несколько таблиц с одними и теми же данными, либо две записи, содержащие поля (столбцы) с одинаковыми данными. В этой статье объясняется, как найти повторяющиеся записи в базе данных на компьютере.
Поиск повторяющихся записей
Чтобы найти повторяющиеся записи с помощью мастера запросов, выполните указанные ниже действия.
-
На вкладке Создание в группе Запросы нажмите кнопку Мастер запросов.
-
В диалоговом окне Новый запрос выберите Поиск повторяющихся записей и нажмите кнопку ОК.
-
В списке таблиц выберите таблицу, которую хотите использовать, и нажмите кнопку Далее.
-
Выберите поля, которые хотите сопоставить, и нажмите кнопку Далее.
-
В списке доступных полей выберите поля с данными, которые хотите обновить, и нажмите кнопку Далее.
-
Введите имя запроса (или примите предложенное имя). Чтобы запустить запрос, нажмите кнопку Готово.
Найдя повторяющиеся записи, вы можете отредактировать или удалить их с помощью запроса.
Чтобы найти повторяющиеся записи из нескольких таблиц, создайте запрос на объединение.
Нужна дополнительная помощь?
Нужны дополнительные параметры?
Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.
В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.
Всем привет. Продолжаем изучать программу Microsoft Access. В этой статье расскажу как произвести Поиск повторяющихся записей с помощью запроса Access. Создав такой запрос в Microsoft Access, можно без труда отыскать дубликаты значений в базе данных. Убедитесь, что программа Microsoft Access очень проста и не требует дополнительных знаний в освоении.
Поиск повторяющихся записей с помощью запроса Access
Чтобы выполнить поиск повторяющихся записей с помощью запроса Access воспользуемся мастером запросов. Перейдем на вкладку «Создание» — пункт «Мастер запросов».
Далее выбираем пункт «Повторяющиеся записи».
Мы можем произвести поиск повторяющихся записей с помощью запроса Access в таблицах или в запросах. Давайте выберем таблицу «Клиенты».
Предположим нам надо найти всех однофамильцев из таблицы «Клиенты». Выбираем поле «Фамилия». Далее.
Здесь мы указываем какие еще поля нужно выводить помимо поле «Фамилия». Выбираем поля: «Имя», «Отчество», «Адрес» и «Телефон».
Оставляем имя запроса по умолчанию, нажимаем «готово» и смотрим как работает поиск повторяющихся записей с помощью запроса Access.
Рассмотрим второй пример. Создадим простой запрос на выборку.
Запустим данный запрос. У нас выводится информация по всем покупкам всех клиентов.
Теперь снова запустим мастер запросов и посмотрим как работает поиск повторяющихся записей с помощью запроса Access.
В мастере запросов выбираем ранее созданный запрос.
В качестве полей-повторов выбираем: «Фамилия», «Имя», «Модель». В качестве дополнительных полей выбираем все оставшиеся поля запроса.
У нас выводится список клиентов, которые в разное время покупали один и тот же товар.
Мы рассмотрели как работает поиск повторяющихся записей с помощью запроса Access.
Если вы хотите узнать, как можно найти однофамильцев в базе Access вторым способом, то переходите по ссылке ЗДЕСЬ.
Если вам нужна готовая база данных Access, то ознакомьтесь со списком представленным ЗДЕСЬ.
—————————————————
Полезные ссылки:
Урок 17: мастер запросов — https://youtu.be/y4eSYCDQ7Wk
Урок 16: запрос на создание таблицы — https://youtu.be/uTxe-abWpNc
Урок 15: запросы с параметром — https://youtu.be/aPJFz22JQHo
Урок 14: запросы с вычисляемыми полями — https://youtu.be/3ha9T_0A4r0
Урок 13: Как определить ГОД, КВАРТАЛ, МЕСЯЦ, ДЕНЬ НЕДЕЛИ в запросе — https://youtu.be/vyp_J49atQQ
Урок 12: Как создать ЗАПРОС С УСЛОВИЕМ — https://youtu.be/bJx78u5wzC8
Урок 11: Как задать условия для ТЕКСТОВЫХ полей в запросах — https://youtu.be/cwbXCFuKdIM
Уроки по SQL-запросам: https://www.youtube.com/playlist?list=PLnzEVwX9gt1jga-65dEwhnjdGS1ZL42MJ
Download Article
Download Article
Duplicate records can appear if you have multiple people entering data into a database without enough safeguards. Merging several databases together can also cause duplicates. Access provides a query tool to find duplicates in your database. You can then remove or merge them, making your database easier to read and more effective.
-
Duplicate data doesn’t mean that all of the fields are identical. For example, a customer that was entered into the database twice may have two different IDs and potentially different spellings. On the other hand, if the name is common it could be two different customers. You’ll need to compare the data available and check each result carefully to determine what is and isn’t duplicate.
Advertisement
-
It is recommended that you create a new backup before making big changes. This way you can restore the database if you accidentally delete the wrong entries.
- Click the File menu and select “Save As” or “Save & Publish”.
- Click “Backup Database” in the Advanced section. Follow the prompts to backup your database.
-
In order to avoid data conflicts, make sure no users will be adding data to the database. This isn’t required, but can save you some headache later if things go wrong.
- Set your database to Exclusive mode if you can. This will prevent any changes from being made by other users. Click the File menu and select “Options”, then select “Client Settings”. In the “Default open mode” section, select “Exclusive”. If you don’t have many people using the database, you generally don’t need to worry about this.
Advertisement
-
The Query tool can find entries that contain duplicate content. The process for starting the wizard varies depending on the version of Access you are using:[1]
- 2013/2010 – Click the “Create” tab and then click “Query Wizard”.
- 2007 – Click the “Insert” or “Create” tab and select “Query Wizard”.
- 2003 – Open the Database window and select the “Queries” tab. Click the “New” button.
-
This query compares fields to find duplicate entries.
Advertisement
-
All of the tables in your database will be listed. Select the table you want to check for duplicates.
- For most duplicate checking, you’ll want to keep the “Tables” view selected.
-
Select all of the fields that you want to compare for duplicate data. Include enough fields to make a judgment. Duplicates are only returned if the fields match character for character. You can use expressions to find partial matches.[2]
- Avoid using general fields. Avoid using fields like the date or location to reduce clutter when comparing entries.
- Without enough fields to make a distinction between records, or with fields that are too general, you’ll get a lot of duplicate results.
Advertisement
-
An additional field or two can help you decide if the data is actually duplicate. For example, an Order ID field will help you determine if the same name twice are separate entries. Include at least one field to help make this distinction and prevent accidental data loss.
-
You’ll be prompted to give the query a name. Click “Finish” to see the results.
Advertisement
-
Any potential duplicates based on your criteria will be displayed. Go through each of the results and use the knowledge you have about your company to decide if the entry is a duplicate. Make absolutely sure that a record is a duplicate before you remove it.
- If you can’t decide, recreate the query with an additional field to help you make your decision.
-
Right-click on the left column and select “Delete Record” to remove a duplicate. You can select multiple records to delete them all at once.[3]
- You may want to merge some data from one of the duplicate records into the record you plan to keep.
- Make sure to not delete all of the records that appear on the duplicate result list, or you won’t have an original record left.
Advertisement
Ask a Question
200 characters left
Include your email address to get a message when this question is answered.
Submit
Advertisement
Video
Thanks for submitting a tip for review!
About This Article
Thanks to all authors for creating a page that has been read 123,373 times.
Is this article up to date?
Обычно меры, предотвращающие появление нежелательных дубликатов имеющихся записей в таблицах, принимаются заранее. Но, не всегда они бывают достаточно эффективны и не всегда нужные действия принимаются своевременно.
В этой статье мы рассмотрим простой поиска дубликатов. В качестве примера используем СУБД Access.
Допустим у нас имеется таблица «Товары», которой хранится название товара и его цена. При этом один и тот же товар не может продаваться по разным ценам. Но, если мы посмотрим на скриншот для таких товаров, как хлеб и макароны существует 3 и 2 варианта цены соответственно, хотя по постановке задачи этого быть не должно.
Лирическое отступление
По-хорошему, при создании таблицы нужно было добавить уникальный индекс для поля «Название», но это сделано не было.
Сейчас это сделать пока невозможно, т.к. добавление уникального индекса для поля с неуникальными записями вызовет ошибку и такой индекс не будет добавлен.
Поэтому перед добавлением индекса нужно найти и затем удалить не нужные дубликаты.
Сразу отметим, что дубликаты могут быть полными (совпадают все поля, кроме первичного ключа (id)) или частичными (совпадает только часть полей). В нашем примере мы имеет дело с последними.
Для поиска любых дубликатов мы можем воспользоваться одним простым способом. Это запрос с группировкой для подсчёта количества записей при помощи функции count и отбором записей количество которых составляет 2 и более.
В нашем случае требуется найти дубликаты по полю «Название» и потому данный запрос будет выглядеть следующим образом.
SELECT Название, COUNT(Код) AS Дубликатов FROM Товары GROUP BY Название HAVING COUNT(Код) >=2; |
Результат его выполнения:
Если при поиске дубликатов нужно учитывать несколько полей, то они добавляются в предложения SELECT и GROUP BY как показано ниже.
SELECT Артикул, Название, Категория, COUNT(Код) AS Дубликатов FROM Товары GROUP BY Артикул, Название, Категория HAVING COUNT(Код) >=2; |
Отличительной чертой метода рассматриваемого в данной статье является его универсальность, т.к. в нём используется стандартный функционал SQL, который позволяет не только искать почти любые дубликаты, но применять его в любой реляционной СУБД.
Нередко бывает полезно
просмотреть поля или записи таблицы,
которые встречаются многократно. В
таблицах с ключевыми полями, имеющими
уникальные значения, повторяющихся
записей в принципе не может быть. Поэтому
и строить запрос на выборку повторяющихся
записей для таких таблиц не имеет смысла.
Для таблиц такого рода можно построить
запрос на выборку повторяющихся значений
отдельных полей. В некоторых таблицах
могут быть не задействованы ключевые
поля. Для таких таблиц может представлять
интерес выборка повторяющихся записей.
Для создания запроса
на выборку повторяющихся записей надо
в форме «Новый запрос» выбрать позицию
«Повторяющиеся записи», после чего
сформируется следующее окно (рисунок
4.10):
Рис.
4.10. Окно выбора
объекта с повторяющимися записями
В этом окне необходимо
выбрать таблицу или запрос, в которых
требуется найти записи с повторяющимися
значениями. После выбора объекта и
перехода к следующему шагу мастера
сформируется окно, представленное на
рисунке 4.11.
В этом окне необходимо
выбрать поля, для которых требуется
найти повторения. Если выбрать все поля,
то повторяющихся записей не будет, так
как среди этих полей есть поле «Код
книги», имеющее уникальные значения. В
данном случае для анализа выбраны поля
«Автор» и «Название».
Рис.
4.11. Окно выбора
полей с повторяющимися значениями
На следующем шаге
мастера отобразится окно (рисунок 4.12):
Рис.
4.12. Окно выбора
дополнительных полей
В этом окне необходимо
выбрать поля, которые будут при выполнении
запроса отображаться вместе с
повторяющимися значениями. В рассматриваемом
случае в качестве такого поля выбрано
поле «Цена».
На следующем шаге
мастера отобразится его последнее,
стандартное окно (рисунок 4.13):
Рис.
4.13. Окно задания
имени запроса
В этом окне можно
изменить предлагаемое имя запроса.
Запрос можно загрузить в режиме
конструктора или просмотреть результаты
его выполнения. В режиме просмотра
выборка по сформированному запросу
выглядит следующим образом (рисунок
4.14):
Рис.
4.14. Вывод
повторяющихся записей по двум полям
Как видно из этого
рисунка, повторяются две пары полей
«Автор-Название». В качестве дополнительного
поля здесь же отображено поле «Цена»,
которое имеет разные значения.
В режиме SQL сформированный
запрос имеет вид:
SELECT Книги.Автор,
Книги.Название, Книги.Цена
FROM Книги
WHERE (((Книги.Автор) In
(SELECT [Автор] FROM [Книги] As Tmp GROUP BY
[Автор],[Название] HAVING Count(*)>1 And [Название]
= [Книги].[Название])))
ORDER BY Книги.Автор,
Книги.Название;
Здесь с помощью
Конструкции WHERE выбираются повторяющиеся
записи – выбираются те значения полей
Книги.Автор, которые входят (In) в результаты
подчиненного запроса SELECT [Автор] FROM
[Книги] As Tmp GROUP BY [Автор],[Название] HAVING
Count(*)>1 And [Название] = [Книги].[Название].
В этом подчиненном
запросе с помощью конструкции GROUP BY
[Автор],[Название] выполняется группировка
по полям «Автор» и «Название».
С помощью конструкции
HAVING Count(*)>1 And [Название] = [Книги].[Название]
выводятся только те группы, в которых
количество записей с одинаковым значением
поля [Книги].[Название] больше 1.
Конструкция HAVING
используется совместно с конструкцией
GROUP BY и сообщает, какие группы должны
быть включены в результирующий запрос.