2015-09-08 2 views
3

Я пытаюсь использовать SQL-запрос в Access, но он не работает. Зачем?Как найти дубликаты в таблице с помощью Access SQL?

SELECT * FROM table 
EXCEPT 
SELECT DISTINCT name FROM table; 

У меня есть синтаксическая ошибка в инструкции FROM.

+1

ли доступ действительно поддерживают КРОМЕ? – jarlh

+2

Я не уверен, что Access поддерживает ключевое слово EXCEPT. – Harsh

+0

не работает? ... – Ali786

ответ

4

использование HAVING COUNT (имя)> 1 пункт

SELECT * FROM Table1 
WHERE [name] IN 
(SELECT name, Count(name) 
FROM Table1 
GROUP BY name 
HAVING COUNT(name)>1) 
3

MS Access не поддерживает ключевое слово EXCEPT. Вы можете попробовать использовать LEFT JOIN, как это:

select t1.* from table t1 left join table t2 on t1.name = t2.name 

EDIT:

Если вы хотите найти дубликаты в таблице, то вы можете попробовать это:

SELECT name, COUNT(*) 
FROM table 
GROUP BY name 
HAVING COUNT(*) > 1 

Вы можете также см.: Create a Query in Microsoft Access to Find Duplicate Entries in a Table и следуйте инструкциям, чтобы найти дубликаты в таблице.

Сначала откройте MDB (база данных Microsoft), содержащую таблицу, которую вы хотите, , чтобы проверить наличие дубликатов. Перейдите на вкладку «Запросы» и «Создать».

enter image description here

Откроется диалоговое окно Новый запрос. Выделите Find Duplicates Мастер запросов и нажмите OK.

enter image description here

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

enter image description here

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

enter image description here

Введите имя запроса и нажмите Готово. Результат будет запущен сразу и появится сообщение . Также запрос сохраняется в разделе «Запросы»: Доступ.

enter image description here

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

enter image description hereenter image description here

+0

Этот запрос показывает больше записей, чем в таблице. Я хочу только выбрать записи, имена которых не уникальны. – maro

+0

@maro: - Вы хотите найти дубликаты в своем столе? Если да, то я обновил свой ответ. Если нет, то, пожалуйста, уточните! –

+0

Rahul: да. Я изменил название вопроса. – maro

1

Вы можете использовать LEFT JOIN или EXISTS

LEFT JOIN

SELECT DISTINCT t1.NAME FROM table1 as t1 
LEFT JOIN table2 as t2 on t1.name=t2.name 
WHERE t2.name is null 
; 

НЕ ВЫХОДИТ

SELECT T1.NAME FROM table1 as t1 where not exists 
(SELECT T2.NAME FROM table2 as t2 where t1.name=t2.name) 
+0

У меня есть только одна таблица. Эти запросы показывают пустую таблицу. Так что это не то же самое, что я спросил. – maro

0

ли доступ поддерживает except или нет. Другое дело, что вы не используете его должным образом. У вас есть select * над словом except и select name ниже. Это недопустимо sql. Если вы пробовали, что в SQL Server, ваше сообщение об ошибке будет All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.

+0

Итак, как я могу выбрать все записи из таблицы, где имена не уникальны? – maro

Смежные вопросы