Как правильно использовать "Не равно" в MS Access?

Цель:

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

Текущий запрос:

SELECT DISTINCT Table1.Column1
FROM Table2, Table1
WHERE Table1.Column1 <> Table2.Column1 

Результаты запроса:

Что происходит, когда я пытаюсь запустить этот запрос, индикатор выполнения заполняется почти сразу, но затем он довольно сильно зависает и не делает ничего другого, насколько я могу видеть. Когда я использую знак an вместо < > , он выводит значения, которые являются равными только штрафам, и если я заменяю Table2.Column1 фактическим фактическим значением, он работает просто отлично.

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

Любые идеи о том, что я делаю неправильно или не хватает здесь?

Ответ 1

Подобно этому

SELECT DISTINCT Table1.Column1
FROM Table1
WHERE NOT EXISTS( SELECT * FROM Table2
    WHERE Table1.Column1 = Table2.Column1  )

Вы хотите НЕ СУЩЕСТВОВАТЬ, а не "Не равно"


Кстати, вы редко хотите написать предложение FROM следующим образом:

FROM Table1, Table2

поскольку это означает "ОТ всех комбинаций каждой строки в таблице 1 с каждой строкой в ​​таблице2..." Обычно это намного больше строк результатов, чем вы когда-либо хотели видеть. И в редком случае, что вы действительно хотите это сделать, более приемлемым синтаксисом является:

FROM Table1 CROSS JOIN Table2

Ответ 2

В Access вы, скорее всего, найдете "Присоединиться" быстрее, если ваши таблицы не очень малы:

SELECT DISTINCT Table1.Column1
FROM Table1 
LEFT JOIN Table2
ON Table1.Column1 = Table2.Column1  
WHERE Table2.Column1 Is Null

Это исключает из списка все записи с совпадением в таблице2.

Ответ 3

Я попытался получить запрос, чтобы вернуть поля из Таблицы 1, которых нет в таблице 2, и попробовал большинство ответов выше, пока не нашел очень простой способ получить результаты, которые я хотел.

Я установил свойства соединения между таблицей 1 и таблицей 2 в третий параметр (3) (все поля из таблицы 1 и только те записи из таблицы 2, где объединенные поля равны) и поместили a Null в поле критериев запроса в таблице 2 в той области, в которой я тестировал. Он отлично работает.

Спасибо всем выше, хотя.